Ich bin nur neugierig, ob jemand weiß, ob es einen guten Grund gibt, warum Djangos Orm 'full_clean' nicht auf einem Modell aufruft, es sei denn, es wird als Teil eines Modellformulars gespeichert.Warum ruft djangos model.save() full_clean() nicht auf?
Beachten Sie, dass full_clean() nicht automatisch aufgerufen wird, wenn Sie die save() -Methode Ihres Modells aufrufen. Sie müssen es manuell aufrufen, wenn Sie eine einstufige Modellüberprüfung für Ihre eigenen manuell erstellten Modelle durchführen möchten. django's full clean doc
(HINWEIS: Angebot für Django aktualisiert 1.6 ... vorherige django docs sowie einen Vorbehalt über ModelForms hatte.)
Gibt es gute Gründe, warum Menschen dieses Verhalten nicht wünschen würde? Ich würde denken, wenn Sie sich die Zeit nehmen würden, einem Modell eine Validierung hinzuzufügen, möchten Sie, dass diese Validierung jedes Mal ausgeführt wird, wenn das Modell gespeichert wird.
Ich weiß, wie man alles richtig funktioniert, ich suche nur nach einer Erklärung.
Vielen Dank für diese Frage, es hat mich davon abgehalten, meinen Kopf gegen die Wand viel mehr Zeit zu schlagen. Ich habe ein Mixin erstellt, das anderen helfen könnte. Schauen Sie sich das Wesentliche an: https://gist.github.com/glarrain/5448253 – glarrain
Und ich benutze endlich das Signal, um den 'pre_save' Haken zu fangen und' full_clean' an allen gefangenen Modellen. –