Autoriser uniquement les nombres décimaux positifs
Dans mon Django modèles que j'ai créé un champ décimal comme ceci:
price = models.DecimalField(_(u'Price'), decimal_places=2, max_digits=12)
Évidemment, il n'a pas de sens pour le prix d'être négative ou nulle. Est-il un moyen de limiter le nombre décimal positif numéros?
Ou dois-je capture ce en utilisant le formulaire de validation?
Vous devez vous connecter pour publier un commentaire.
Utiliser le
MinValueValidator
.min_value=Decimal('0.01')
min_value=Decimal('0.01')
pour un modèle de champ. Il n'est pas documenté dans la modèle de champ docs.min_value
ne fonctionne pas sur les modèles.DecimalField.Vous pourriez faire quelque chose comme ceci :
Cela, aussi, est responsable du programme de validation de la valeur de "prix"
Selon la documentation, il semble qu'il n'y a pas moyen de mettre quelque chose comme une contrainte de base de données sur un champ. Le meilleur que vous pouvez faire est d'ajouter le modèle de "validateurs", qui sera appelé si vous appelez la validation du modèle ou de l'utilisation d'un
ModelForm
. Les validateurs sont ignorées si vous venez de mettre les valeurs dans un objet etsave()
.Donc, vous pouvez ajouter de validation sur les formulaires ou vous pouvez ajouter la validation du modèle, qui a également se faire au niveau du formulaire si vous utilisez
ModelForm
.De la docs sur "Comment les validateurs sont exécutés":
save()
méthode du modèle à exécuterself.full_clean()