Lorsque nous ajoutons un champ de base de données dans django, nous écrivons généralement :
models.CharField(max_length=100, null=True, blank=True)
La même chose est faite avec ForeignKey
, DecimalField
etc. Quelle est la différence fondamentale entre le fait d'avoir
-
null=True
sólo -
blank=True
sólo -
null=True
,blank=True
par rapport à différents ( CharField
, ForeignKey
, ManyToManyField
, DateTimeField
). Quels sont les avantages/inconvénients de l'utilisation de 1/2/3 ?
12 votes
Vous avez de belles réponses à ce sujet ici : stackoverflow.com/questions/8159310/ et ici : stackoverflow.com/questions/4384098/
4 votes
Bonne lecture : b-list.org/weblog/2006/jun/28/
0 votes
Oui, j'ai aussi ce cas d'utilisation avec
ForeignKey
conblank=True
mais sansnull=True
. Lorsque le modèle est enregistré, je veux le "publier" automatiquement en créant une entrée publiée à partir de celui-ci. Je ne peux donc pas sauvegardernull
dans la base de données, car chaque modèle doit être "publié", mais je veux pouvoir laisser le champ vide dans l'administration.0 votes
Je pense que vous pourriez être intéressé par [ Enregistrer les CharFields vides et invalidables comme nuls plutôt que comme une chaîne vide]( code.djangoproject.com/ticket/4136 ). Il existe de nombreuses discussions à ce sujet, et un problème très pratique que vous pouvez rencontrer (par exemple, vous voulez ajouter une url openid pour chaque utilisateur qui peut être nulle et doit être unique).
0 votes
Évitez d'utiliser null pour les champs basés sur des chaînes de caractères, tels que CharField et TextField. docs.djangoproject.com/fr/3.1/ref/models/fields