django formset属性编辑

时间:2011-01-27 09:18:39

标签: django forms django-forms

目前正在查看:http://docs.djangoproject.com/en/dev/topics/forms/modelforms/

我目前正在尝试创建一个简单的产品表单,稍后会添加创建产品的作者/用户。我的代码如下:

ProductFormSet = modelformset_factory(Product, exclude=('pub_date', 'author')) #handle categories separately/ via JSON feed

if request.method == 'POST':
    formset = ProductFormSet(request.POST, request.FILES)

    if formset.is_valid():
        new = formset.save(commit=False)
        new.author = request.user
        new.save()
        return HttpResponse("DONE!!")

但是我得到一个属性错误,因为'new'似乎作为空列表而不是新表单对象的实例返回。我哪里错了?

非常感谢,

亚当

1 个答案:

答案 0 :(得分:0)

您似乎混淆了表单和表单集。

表单用于编辑单个实例,form.save()(在模型表单的情况下)返回已保存的实例。

formset用于编辑多个实例。 formset.save()返回已保存的实例列表。显然,列表本身没有author属性 - 它是该列表中的每个实例。因此,您需要遍历列表并在每个项目上设置author