我正在从这里阅读 django admin 中的save_model
andsave_formset
https://docs.djangoproject.com/en/1.5/ref/contrib/admin/#django.contrib.admin.ModelAdmin.save_model
但我对何时save_formset
调用感到困惑。
不应该在 期间保存表单集save_model
吗?
我正在从这里阅读 django admin 中的save_model
andsave_formset
https://docs.djangoproject.com/en/1.5/ref/contrib/admin/#django.contrib.admin.ModelAdmin.save_model
但我对何时save_formset
调用感到困惑。
不应该在 期间保存表单集save_model
吗?
该文档可以使用一些说明。
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)
save_model
保存每个特定内联的主模型
save_related
保存ManyToMany
和调用save_formset
save_model 用于正在编辑的模型,即您注册 ModelAdmin 的任何模型
save_formset 用于保存表单集(ModelAdmin.inlines)