【发布时间】:2011-09-05 16:28:39
【问题描述】:
我创建了一个包含多个相同类型字段的可编辑表单集。
可以编辑和提交数据。
有没有办法将此表单集绑定到数据以便自动更新?或
我是否需要遍历所有可编辑字段并单独更新它们?
【问题讨论】:
-
这很简单 - 只需更改第 9 行即可。哦,糟糕,您还没有显示任何代码。
我创建了一个包含多个相同类型字段的可编辑表单集。
可以编辑和提交数据。
有没有办法将此表单集绑定到数据以便自动更新?或
我是否需要遍历所有可编辑字段并单独更新它们?
【问题讨论】:
我不是 100% 你在问什么,但你的数据来自模型吗?如果是这样,您可以使用 model formsets
将表单集绑定到 ModelFormshttps://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
您可以从该模型创建表单集。类似这样的东西:
在您的 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 和验证时自动更新。它还知道何时在表单集中编辑了特定实例,因此您可以做进一步的逻辑。
【讨论】: