首页 > 解决方案 > 使用 AJAX/Django 填写客户地址

问题描述

我有一个“订单”表单,用户在其中选择一个客户(从外键下拉列表中)。当用户根据包含客户名称和客户地址的客户模型选择客户时,我想在相同的表单中自动填充客户地址的文本字段。我的理解是这将需要一些 AJAX,但我对 AJAX 完全没有经验,我希望有人可以向我展示如何做到这一点的示例,因为我将通过我的程序遇到许多类似的情况。

模型.PY

class Customers(models.Model):

    c_name = models.CharField(max_length=100)
    c_address = models.CharField(max_length=100)

class Orders(models.Model):
    reference = models.IntegerField()
    c_name = models.ForeignKey(Customers) #dropdown the user selects from
    ship_to = models.CharField(max_length=1000) #this is the field I want to populate automatically
... 

表格.PY

class CreateOrderForm(forms.ModelForm):
    class Meta:
        model = Orders
        fields = ('reference', 'c_name', 'ship_to', 'vessel', 'booking_no', 'POL',
        'DOL', 'COO', 'POE', 'ETA', 'pickup_no', 'terms', 'sales_contact', 'trucking_co', 'loading_loc', 'inspector', 'total_cases', 'total_fob', 'freight_forwarder', 'commodity', 'is_airshipment', 'credit')

意见.PY

def add_order(request):
    if request.method == "POST":
        form = CreateOrderForm(request.POST)

        if form.is_valid():
            reference_id = form.cleaned_data.get('reference')
            form.save()
            return redirect('add_manifest', kwargs={'reference_id': reference_id})
    else:
    form = CreateOrderForm()
    objectlist = Customers.objects.all()
    context = {
        'form': form,
        'objectlist': objectlist,
    }

    return render(request, 'add_order.html', context)

当从下拉列表中选择客户时,ship_to 应该从客户模型中填充该客户的 c_address,而无需刷新。谢谢!

标签: pythondjangoajax

解决方案


您应该制作一个 api 并将其与 html 页面上的 javascript 一起使用。

开始学习客户端的js和jQuery,然后使用django rest框架构建api。

基本上在客户端,您应该对下拉更改进行操作,向 api 发出请求并使用响应来填充其他信息。


推荐阅读