我讀了save_model
和save_formset
在Django管理從這裏什麼是Django管理
https://docs.djangoproject.com/en/1.5/ref/contrib/admin/#django.contrib.admin.ModelAdmin.save_model
save_model和save_formset之間的差異,但我很困惑,當save_formset
被調用。
在save_model
期間不應該保存表格集嗎?
我讀了save_model
和save_formset
在Django管理從這裏什麼是Django管理
https://docs.djangoproject.com/en/1.5/ref/contrib/admin/#django.contrib.admin.ModelAdmin.save_model
save_model和save_formset之間的差異,但我很困惑,當save_formset
被調用。
在save_model
期間不應該保存表格集嗎?
save_model是模型正在編輯即您註冊的ModelAdmin與
save_formset是用於保存表單集(ModelAdmin.inlines)
save_model
節省主力機型 save_related
節省ManyToMany
並呼籲save_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)
然後什麼是'ModelAdmin.save_related'用於 – user192082107 2013-02-18 08:55:12
save_related方法被給予HttpRequest,父級ModelForm實例,內聯表單集列表和基於是否添加或更改父級的布爾值。在這裏,您可以爲與父項相關的對象執行任何預保存或後保存操作。請注意,此時父對象及其表單已被保存。 – pratibha 2013-02-18 09:30:21
根據save_model方法是添加還是更改對象,向save_model方法提供HttpRequest,模型實例,ModelForm實例和布爾值。在這裏,您可以進行任何保存前或保存後的操作。 Save_formset方法根據是否添加或更改父對象給出HttpRequest,父模型實例和布爾值。 – pratibha 2013-02-18 09:31:24