Django动态formset表单

时间:2012-12-13 17:58:17

标签: django django-forms

您好我有一个网站,它将用户结果输出为零件和数量表。页面上的用户交互可能导致表中的行数(部分)变化。

我需要针对用户保存此部件列表,因此我认为formset是处理此问题的最佳方式:

forms.py

class UserBuildForm(forms.Form):
    part = forms.CharField()
    part_quantity = forms.IntegerField()

views.py

from django.forms.formsets import formset_factory
from tool.forms import UserBuildForm

def my_view(request):
    ...
    UserBuildFormSet = formset_factory(UserBuildForm)
    formset = UserBuildFormSet()
    ...

我的想法是将表单字段包装在表格html中,以便零件列和数量列实际上是输入(尽管只有数量应该是用户可编辑的)。这样每一行实际上都是一种形式。

现在,我的ajax函数通过向表中追加和删除行来工作。我可以添加额外的表单字段,只是简单的html?

我该如何处理这些动态数量的表格?我知道您可以使用extra指定表单集的数量,但我需要验证的表单数量是未知的。

此外 - 这是保存用户产品数据的典型方法的最佳方法吗?

任何帮助非常感谢。

1 个答案:

答案 0 :(得分:2)

  • 您可以使用jquery
  • 添加/删除表单字段
  • 表单数量存储在隐藏输入“id_formname_TOTAL-FORMS
  • 只需迭代views.py中的表单来处理数据:

    表单中的formset.forms:     form.save()

这是excellet教程,它向您展示如何处理添加/删除表单字段(jquery): http://stellarchariot.com/blog/2011/02/dynamically-add-form-to-formset-using-javascript-and-django/