私はここからdjango adminでsave_model
andを読んでいますsave_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
andを読んでいますsave_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
すべての関連/インライン モデルを保存するために、完了後に (1 回) 呼び出されます。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 は、編集中のモデル用です。つまり、ModelAdmin を登録したモデルは何でも構いません。
save_formset は、フォームセット (ModelAdmin.inlines) を保存するためのものです。