AttributeError:'AlumniResponseFormFormSet'对象没有属性'new_objects'

Bri*_*ant 7 django django-models django-forms django-admin

我正在使用Django管理员并尝试对映射为InlineModelAdmin对象的相关对象进行一些更改.我正在尝试使用Django提供的save_related(self,request,form,formsets,change)方法.当我尝试保存某些内容时,出现错误:

AttributeError: 'AlumniResponseFormFormSet' object has no attribute 'new_objects'

其他信息:

1)我有两个InlineModelAdmins
2)当发生此错误时,我没有保存AlumniResponseInline.我正在保存与同一父模型关联的另一个InlineModelAdmin
3)直到我添加了save_related()方法,我没有遇到问题保存InlineModelAdmin
4)在我的所有代码在save_related()中执行后发生此错误,所以我无法控制捕获该异常

save_related()的文档:

save_related方法被赋予HttpRequest,父ModelForm实例,内联formset列表以及基于父项是否被添加或更改的布尔值.在这里,您可以对与父项相关的对象执行任何预保存或后保存操作.请注意,此时父对象及其表单已保存.

tos*_*lli 6

我使用save_formset而不是save_related,我遇到了同样的问题,直到我意识到我错过了方法中的两行重要代码:

instances = formset.save(commit=False)
Run Code Online (Sandbox Code Playgroud)

在开始,然后在循环实例之后对每个实例做一些事情:

instance.save() #commit instance changes
formset.save_m2m() #commit the whole formset changes
Run Code Online (Sandbox Code Playgroud)

在末尾。

如果在返回之前不调用 save_m2m() 方法,则表单集对象将不具有construct_change_message(self, request, form, formsets)contrib/admin/options.py中的方法所需的“new_objects”属性

因此,无论您是否想用它来制作一些东西,都应该对主模型中的每个内联进行此操作。