目前正在查看: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'似乎作为空列表而不是新表单对象的实例返回。我哪里错了?
非常感谢,
亚当
答案 0 :(得分:0)
您似乎混淆了表单和表单集。
表单用于编辑单个实例,form.save()
(在模型表单的情况下)返回已保存的实例。
formset用于编辑多个实例。 formset.save()
返回已保存的实例列表。显然,列表本身没有author
属性 - 它是该列表中的每个实例。因此,您需要遍历列表并在每个项目上设置author
。