Django动态多表单

Django dynamic multiple form

我有添加公司的表格:

class Company(models.Model):
name = models.CharField(max_length=50, )
profile = models.ForeignKey("Profile", blank=True, null=True)
sector = models.ForeignKey("Sector", blank=True, null=True)

我想在单击适当的按钮时在同一站点上动态添加另一个表单。例如单击 "Add Address" 按钮后,表单应扩展为:

city = models.ForeignKey("City", blank=True, null=True)
street_name = models.CharField(max_length=50, blank=True)

并提交此表单将创建新的 Customer、Address 和 CustomerAddress 记录。我已经找到了不完美的解决方案,因为我在 JS 的附加表单和 show/hide 表单中添加了 "blank=True"。这个灵魂引起了另一个问题,因为现在我没有任何形式的验证。

我不想为每个模板创建自定义验证,我在其中添加了多个表单。

每个模型都有不同的表格,而不是使用一种表格。

当用户单击 "Add address" 按钮时,向模板添加隐藏输入。

<input type="hidden" name="add-address" />

然后在您看来,仅在存在隐藏输入时实例化地址表单。

if "add-address" in request.POST:
    address_form = AddressForm(request.POST)
else:
    address_form = AddressForm()

这样,您就可以将地址表中的字段设为必填。