177 votes

Pourquoi n ' t django ' model.save() appel complet propre ?

Je suis juste curieux de savoir si quelqu'un sait si il y a une bonne raison pourquoi l'orm de django ne fait pas appel 'full_clean' sur un modèle, sauf si elle est enregistrée dans le cadre d'un modèle de formulaire.

Notez que full_clean() ne sera pas appelée automatiquement lorsque vous appelez votre modèle la méthode save (). Vous aurez besoin de l'appeler manuellement lorsque vous souhaitez exécuter une étape de validation du modèle pour votre propre créées manuellement les modèles. django nettoyage complet doc

(NOTE: la citation mise à jour pour Django 1.6... précédent django docs avait une mise en garde à propos de ModelForms).

Sont là de bonnes raisons pourquoi les gens ne veulent pas ce comportement? J'avais pense que si vous avez pris le temps d'ajouter la validation d'un modèle, vous voulez que la validation d'exécuter à chaque fois que le modèle est enregistré.

Je sais comment obtenir que tout fonctionne correctement, je suis à la recherche d'une explication.

64voto

lqc Points 2498

Autant que je sache, c'est à cause de la compatibilité ascendante. Il y a aussi des problèmes avec ModelForms avec exclue des champs, des modèles avec des valeurs par défaut, pre_save() des signaux, etc.

Les Sources que vous pourriez être intéressé par:

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X