我有添加公司的表格:
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中显示/隐藏表单。这种灵魂造成了另一个问题,因为现在我没有对形式进行任何验证。
我不想为每个模板创建自定义验证,我在其中添加了多个表单。
答案 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表单中动态添加其他字段。