python - 使用 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,而无需刷新。谢谢!
解决方案
您应该制作一个 api 并将其与 html 页面上的 javascript 一起使用。
开始学习客户端的js和jQuery,然后使用django rest框架构建api。
基本上在客户端,您应该对下拉更改进行操作,向 api 发出请求并使用响应来填充其他信息。
推荐阅读
- reactjs - React.js - 功能组件中的状态未更新
- azure-cosmosdb - Mongo API 投影对 Cosmos 请求单位费用的影响
- python - Opencv waitKeyEx 对多个键使用相同的值
- oracle - 您可以将 SonarLint 添加到 OpenScript OATS 吗?
- javascript - 以 react-hook-form 记录不断变化的输入字段?
- gitlab - gitlab:如何检查提交中的所有更改
- formatting - 如何在不使用类名生成器的情况下设置网格单元格/行背景的样式
- python - Pandas 对行进行切片并将其添加到第一列
- php - Laravel Jobs/Queues - 来自不同 laravel 应用程序的调度作业
- python - 带有 in 运算符的 while 函数不起作用