2012-12-20 12 views
6

Für alle meine Django-Anforderungen, die das Überschreiben der Speichermethode erfordern, habe ich save() in meinen Modellen verwendet. Als ich plötzlich nach etwas Ausschau hielt, das ein wenig mehr Aufleuchten erforderte, schlug jemand vor, in meiner Admin-Klasse save_model() zu überschreiben.Unterschied zwischen save und save_model()

Ich fand die Dokumente auf beiden, und ich bemerkte sofort, dass die Argumente unterschiedlich sind. Wird save_model() nur aufgerufen, wenn das Modell vom Administrator gespeichert wird? und die Methode save() wird aufgerufen, wenn das Modell gespeichert wird?

UPDATE

Also habe ich herausgefunden, dass, wenn aus dem Admin-Speichern. Sowohl 'save' als auch 'save_model()' werden aufgerufen. Es scheint, dass 'save_model()' zuerst aufgerufen wird. In meiner speziellen Anwendung verwende ich pre_save Signale und 'save()' Überschreibungen. Jetzt möchte ich 'save_model()' Overrides hinzufügen. Es ist die Interaktion und Reihenfolge von all diesen sicheren Überschreibungen und Signalen, die mich verwirren.

Antwort

3

Als save() ist eine Methode von Model während save_model() ist eine Methode von ModelAdmin ... ja.

+1

Okay, das weiß ich. Aber was sind die grundlegenden Unterschiede? Warum existieren beide? Wann wird man im Vergleich zum anderen genannt? – Jglstewart

+0

und wenn Sie von der Admin speichern .. Was heißt zuerst? save_model() oder speichern()? – Jglstewart

+1

Eines existiert, so dass admin-spezifische/-only-Regeln implementiert werden können, und das andere existiert, so dass Regeln, die alle Verwendungen eines Modells betreffen, implementiert werden können. –

Verwandte Themen