La validation de modèle Django est-elle gérée uniquement via l'API de formulaires?

StackOverflow https://stackoverflow.com/questions/805047

  •  03-07-2019
  •  | 
  •  

Question

Est-ce le seul moyen de créer une validation de modèle personnalisée? Pour le faire en utilisant les formulaires? Que faire si je souhaite envoyer des données à la base de données par un autre moyen que les formulaires?

Était-ce utile?

La solution

Actuellement, Django ne fournit aucune validation au niveau du modèle (hormis les validations de base "NOT NULL", "UNIQUE" et de longueur). Ceci est sur la liste TODO mais ne correspondra probablement pas à la prochaine version 1.1.

Vous pouvez effectuer des tâches liées à la validation avec la méthode save () de votre modèle ou utiliser le signal before_save (une exception levée dans le gestionnaire de signaux entraînera l'annulation de la transaction) .

Autres conseils

La validation du modèle sera disponible prochainement dans Django version 1.2. Il est disponible maintenant si vous utilisez une extraction Django svn actuelle du coffre.

Diverses méthodes clean sont maintenant disponibles. Voir http://docs.djangoproject.com/en/dev/ref / models / instances / # id1 pour plus de détails.

En général, vous devriez être en mesure de gérer ce que vous voulez grâce à la fonction types de champs et leurs options ou la méta du modèle options . Vous pouvez également remplacer la méthode de sauvegarde effectuer la validation / assainissement. Si cela ne suffit pas, vous pouvez créer votre propre type de champ .

Le problème est qu’il n’ya pas de bon comportement attendu. Que devrait-il arriver? Une exception devrait-elle être levée? Les champs ne sont en réalité qu'une abstraction au niveau de la base de données. Par conséquent, il ne devrait pas contenir plus d'informations que ce que la base de données doit savoir.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top