null=True
blank=True
default = 0
Quelle est la différence ? Quand utilisez-vous quoi ?
null=True
blank=True
default = 0
Quelle est la différence ? Quand utilisez-vous quoi ?
En direct de Référence du champ du modèle Django :
Field.null
Si
True
Django stockera les valeurs vides commeNULL
dans la base de données. La valeur par défaut estFalse
.Notez que les valeurs de chaînes vides seront toujours stockées en tant que chaînes vides, et non en tant que
NULL
. N'utilisez quenull=True
pour les champs non textuels tels que les entiers, les booléens et les dates. Pour les deux types de champs, vous devrez également définirblank=True
si vous souhaitez autoriser les valeurs vides dans les formulaires, comme le fait l'optionnull
n'affecte que le stockage dans la base de données (voirblank
).Évitez d'utiliser
null
sur les champs basés sur des chaînes de caractères tels queCharField
yTextField
sauf si vous avez une excellente raison. Si un champ basé sur une chaîne de caractères anull=True
ce qui signifie qu'il y a deux valeurs possibles pour "aucune donnée" : NULL, et la chaîne vide. Dans la plupart des cas, il est redondant d'avoir deux valeurs possibles pour "pas de données" ; la convention de Django est d'utiliser la chaîne vide, et pasNULL
.
Field.blank
Si
True
le champ peut être vide. La valeur par défaut estFalse
.Notez que ceci est différent de
null
.null
est purement lié à la base de données, tandis queblank
est lié à la validation. Si un champ ablank=True
La validation sur le site d'administration de Django autorise la saisie d'une valeur vide. Si un champ ablank=False
le champ sera obligatoire.
Field.default
La valeur par défaut du champ. Il peut s'agir d'une valeur ou d'un objet appelable. S'il est appelable, il sera appelé chaque fois qu'un nouvel objet sera créé.
De docs :
null
Si Vrai, Django stockera les valeurs vides comme NULL dans la base de données. La valeur par défaut est False.
blank
Si True, le champ peut être être vide. La valeur par défaut est False.
default
La valeur par défaut pour le champ.
Vous pouvez utiliser " default
"pour définir la valeur qui sera utilisée pour le champ en question si votre code ne lui attribue pas explicitement une valeur.
Utiliser " blank
"blank=True permettra au champ de prendre une valeur vide.
Utiliser " null
"si vous souhaitez enregistrer une valeur vide comme "null" dans la base de données. Cependant, il est souvent préférable de donner aux valeurs vides la valeur d'une chaîne vide ou la valeur 0, selon le cas, pour un champ donné.
Je sais que vous avez déjà votre réponse mais jusqu'à ce jour, il est difficile de juger s'il faut mettre null=True
o blank=True
o both
à un champ. Je pense personnellement qu'il est assez inutile et déroutant de fournir autant d'options aux développeurs. Laissez-les gérer les blancs ou les nuls comme ils le souhaitent.
En termes de mise en œuvre :
Le champ "vide" correspond à tous les formulaires. Indique si cette valeur est requise dans le formulaire et si la validation correspondante est effectuée. La valeur 'True' autorise les valeurs vides.
Le champ 'null' correspond au niveau de la base de données. Il sera défini comme NULL ou NOT NULL au niveau de la BD.
Ainsi, si vous laissez un champ vide dans l'administration avec blank=true, NULL est introduit dans la base de données. Cela peut entraîner une erreur si cette colonne particulière dans la base de données est spécifiée comme NOT NULL.
Nulle : Il est lié à la base de données. Définit si une colonne de base de données donnée accepte ou non les valeurs nulles.
vierge : Il est lié à la validation. Il sera utilisé pendant la validation des formulaires, lors de l'appel à form.is_valid().
Défaut : Tout le temps il stocke la valeur donnée (valeur par défaut) au champ si on ne fournit pas de valeur pour ce champ.
Les valeurs par défaut de null et blank sont Faux .
Cela dit, il est parfaitement possible d'avoir un champ avec null=True et blank=False. Cela signifie qu'au niveau de la base de données, le champ peut être NULL, mais qu'au niveau de l'application, c'est un champ obligatoire.
Maintenant, la plupart des développeurs se trompent : Définir null=True pour les champs basés sur des chaînes de caractères tels que CharField et TextField. Évitez de le faire. Sinon, vous finirez par avoir deux valeurs possibles pour "aucune donnée", c'est-à-dire : Aucun et une chaîne vide. Avoir deux valeurs possibles pour "aucune donnée" est redondant. La convention Django est d'utiliser la chaîne vide, et non NULL.
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.