I am reading the save_model
and save_formset
in django admin from here
https://docs.djangoproject.com/en/1.5/ref/contrib/admin/#django.contrib.admin.ModelAdmin.save_model
But I am confused as to when save_formset
is called.
Shouldn't the formset be saved during save_model
?
The documentation could use a little clarification.
save_model
is called during add or change to save the base model. It is specifically not intended to save related or inlined models. save_related
is called (once) after save_model
completes to save off all related / inlined models. save_formset
is called potentially many times during each add / change, once for every inline defined on your ModelAdmin
. It is called by the base class implementation of save_related
. If you look at the code for admin.ModelAdmin
, you can see that save_model
and save_related
happen one after the other:
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)
and that save_related
has a simple implementation to call save_formset
for each inline:
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 is for the model being edited ie whatever model you registered your ModelAdmin with
save_formset is for saving the formsets (ModelAdmin.inlines)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.