Django动态多种形式

时间:2018-01-12 11:25:07

标签: python django django-forms django-templates dynamic-forms

我有添加公司的表格:

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)

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

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

并提交此表单将创建新的Customer,Address和CustomerAddress记录。我已经找到了不完美的解决方案,因为我在其他表单中添加了#34; blank = True",以及在JS中显示/隐藏表单。这种灵魂造成了另一个问题,因为现在我没有对形式进行任何验证。

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

2 个答案:

答案 0 :(得分:0)

为每个模型使用不同的表单,而不是使用一个表单。

当用户点击"添加地址"按钮,为tempalte添加隐藏的输入。

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

然后在您的视图中,仅在隐藏输入存在时实例化地址表单。

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

这样,您就可以填写地址表格中的字段。

答案 1 :(得分:0)

在这里dynamically add field to a form,您可以找到如何在django表单中动态添加其他字段。