我正在阅读 django admin 中的 save_model
和 save_formset
https://docs.djangoproject.com/en/1.5/ref/contrib/admin/#django.contrib.admin.ModelAdmin.save_model
但我对何时调用 save_formset
感到困惑。
在 save_model
期间不应该保存 formset 吗?
最佳答案
documentation可以使用一点澄清。
save_model
在添加或更改期间调用以保存基础模型。它特别不旨在保存相关或内联模型。save_related
在save_model
完成后调用(一次)以保存所有相关/内联模型。save_formset
在每次添加/更改期间可能被调用多次,一次是针对您的ModelAdmin
上定义的每个内联。它由save_related
的基类实现调用。
如果您查看 admin.ModelAdmin
的代码,您可以看到 save_model
和 save_related
一个接一个地发生:
class ModelAdmin(BaseModelAdmin):
def changeform_view(...):
# ...
if all_valid(formsets) and form_validated:
self.save_model(request, new_object, form, not add)
self.save_related(request, form, formsets, not add)
并且 save_related
有一个简单的实现来为每个内联调用 save_formset
:
class ModelAdmin(BaseModelAdmin):
# ...
def save_related(self, request, form, formsets, change):
form.save_m2m()
for formset in formsets:
self.save_formset(request, form, formset, change=change)
关于python - django admin 中的 save_model 和 save_formset 之间有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14931865/