是否有数据绑定formset的功能?

时间:2011-05-31 17:36:49

标签: django forms formset

我创建了一个可编辑的formset,其中包含相同类型的多个字段。

可以编辑和提交数据。

有没有办法将此formset绑定到数据,以便自动更新?或

我是否需要遍历所有可编辑字段并单独更新它们?

1 个答案:

答案 0 :(得分:1)

我不是100%你问的问题,但你的数据来自模特吗?如果是这样,您可以使用模型表单集

将表单集绑定到ModelForms

https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#model-formsets

所以,如果你有一个模特:

class Product(models.Model):
    field_1 = models.CharField(...)
    field_2 ...
    ...

和模型表格:

class ProductForm(forms.ModelForm):
    field_1 = models.TextField(max_length=100)
    field_2 ...
    ...

    class Meta:
        model = Product

您可以从该模型创建一个formset。有点像这样:

views.py

中的

ProductFormSet = modelformset_factory(ProductForm)
if request.method=="POST":
    formset = ProductFormSet(request.POST)
    if formset.is_valid():
        formset.save()
    ...
else:
    formset = ProductFormSet()
...
return direct_to_template(request, 
    template = "foo.html",
    extra_context = { 'formset' : formset })

这很有用,因为在对表单集进行POST和验证时,模型会自动更新。它还知道何时在formset中编辑了特定实例,因此您可以做进一步的逻辑。