【问题标题】:Is there a feature for data bound formset?是否有数据绑定表单集的功能?
【发布时间】:2011-09-05 16:28:39
【问题描述】:

我创建了一个包含多个相同类型字段的可编辑表单集。

可以编辑和提交数据。

有没有办法将此表单集绑定到数据以便自动更新?或

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

【问题讨论】:

  • 这很简单 - 只需更改第 9 行即可。哦,糟糕,您还没有显示任何代码。

标签: django forms formset


【解决方案1】:

我不是 100% 你在问什么,但你的数据来自模型吗?如果是这样,您可以使用 model formsets

将表单集绑定到 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

您可以从该模型创建表单集。类似这样的东西:

在您的 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 和验证时自动更新。它还知道何时在表单集中编辑了特定实例,因此您可以做进一步的逻辑。

【讨论】:

  • 我刚刚看到这篇文章,正在寻找一种方法来做到这一点,但是当我在表单集上调用 .save() 时,我得到一个异常,即表单集没有属性保存。这个例子中是否缺少某些东西,或者这是在某个时候从 Django 中删除的?
  • 我现在没时间看,但是你可以循环遍历formset中的每个表单,然后分别保存每个特定的表单
  • 这确实是我最终所做的。
猜你喜欢
  • 1970-01-01
  • 2021-11-03
  • 2012-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多