Django 提交两个带有外键的表单



我正在尝试在一个模板中提交两个表单。一个模型键是另一个模型的外键。外键将在开机自检完成后设置。

class CustomerSystem(models.Model):
---Some fields---
class MN(models.Model):
--some fields--
customer_system_serial_number = models.ForeignKey(CustomerSystem, on_delete= models.CASCADE)

这就是我的 models.py 的样子

模板文件是带有"form"变量的标准模板

forms.py,我已从 MN 模型中排除了customer_system_serial_number。

这就是我在视图中尝试的内容

@login_required
def add_customers(request):
if request.method == 'POST':
form_cs = CustomerSystemForm(request.POST, prefix='cs')
form_mn = MNForm(request.POST, prefix='mn')
if form_cs.is_valid() and form_mn.is_valid():
model_instance = form_cs.save(commit=False)
model_instance.save()
print(model_instance)
form_mn.customer_system_serial_number = model_instance
form_mn.save()
return HttpResponseRedirect('/database/customers')
else:
form_cs = CustomerSystemForm(request.POST, prefix='cs')
form_mn = MNForm(request.POST, prefix='mn')
return render(request, 'database/customer_system.html', {'form_cs': form_cs, 'form_mn': form_mn})

我得到的错误是非完整性错误/非空错误。我可以看到model_instance正在保存,因为它打印了一个有效的对象。我正在尝试做一些事情,例如如何在表单完成期间设置外键(python/django),但是我显然缺少一些可能非常基本的东西。任何帮助不胜感激

你在错误的表单上执行 commit=False,并且将外键设置为 MN 表单,而不是模型实例。

model_instance = form_cs.save()
mn_instance = form_mn.save(commit=False)
mn_instance = customer_system_serial_number = model_instance
mn_instance.save()
return HttpResponseRedirect('/database/customers')

最新更新