null=True
blank=True
default = 0
Quelle est la différence? Quand utilisez-vous quoi?
Direct from Référence du champ de modèle Django :
Field.null
Si
True
, Django stockera les valeurs vides sous la formeNULL
dans la base de données. La valeur par défaut estFalse
.Notez que les valeurs de chaîne vides seront toujours stockées en tant que chaînes vides, et non pas en tant que
NULL
. Utilisez uniquementnull=True
pour les champs autres que des chaînes 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, car le paramètrenull
affecte uniquement le stockage de la base de données (voirblank
).Évitez d’utiliser
null
sur des champs basés sur des chaînes tels queCharField
etTextField
sauf si vous avez une excellente raison. Si un champ basé sur une chaîne anull=True
, cela signifie qu'il 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 Django consiste à utiliser la chaîne vide, et non pasNULL
.
Field.blank
Si
True
, le champ est autorisé à ê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, alors queblank
est lié à la validation. Si un champ ablank=True
, la validation sur le site d’administration de Django autorisera la saisie d’une valeur vide. Si un champ ablank=False
, le champ sera requis.
Field.default
La valeur par défaut pour le champ. Cela peut être une valeur ou un objet appelable. Si appelable, il sera appelé chaque fois qu'un nouvel objet est créé.
Tu ne comprends pas tout ça?
De docs :
null
Si la valeur est True, Django stockera les valeurs vides en tant que NULL dans la base de données. La valeur par défaut est False.
blank
Si True, le champ est autorisé à ê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 le définit pas explicitement.
Utilisez "blank
" à des fins de validation du formulaire - blank = True permet de définir une valeur vide pour le champ.
Utilisez "null
" si vous souhaitez stocker une valeur vide sous la forme "null" dans la base de données. Cependant, il est souvent préférable de définir les valeurs vides sur une chaîne vide ou sur 0, selon le cas, pour un champ donné.
En termes de mise en œuvre:
Le champ "vide" correspond à tous les formulaires. Spécifie si cette valeur est requise dans le formulaire et que la validation du formulaire correspondant est effectuée. 'True' autorise les valeurs vides.
Le champ 'null' correspond au niveau de la base de données. Il sera défini sur NULL ou NOT NULL dans la base de données.
Par conséquent, si vous laissez un champ vide dans admin avec blank = true, NULL est introduit dans la base de données. Maintenant, cela peut générer une erreur si cette colonne particulière dans la base de données est spécifiée comme NOT NULL.
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
ou blank=True
ou both
dans un champ Personnellement, j'estime qu'il est assez inutile et déroutant de proposer autant de solutions aux développeurs. Laissez le gérer les null ou les blancs comme ils le souhaitent.