champs optionnels dans les modèles django
j'ai le modèle suivant dans django.
class Link(models.Model):
name = models.CharField(max_length=100)
url = models.CharField(max_length=100)
tag = models.CharField(max_length=100)
def __unicode__(self):
return self.name
j'ai besoin que le champ url soit optionnel. Comment dois-je faire?
2 réponses
Ajouter l'attribut blank=True
. Optionnellement, vous pouvez aussi rendre le champ NULL avec null=True
.
null=True
CharField
n'est pas recommandé, comme vous pouvez le voir à partir de django docs:
évitez d'utiliser null sur les champs basés sur des chaînes de caractères tels que CharField et TextField. Si un champ basé sur une chaîne de caractères A null = True, cela signifie qu'il a deux valeurs possibles pour "no data": NULL, et la chaîne vide. Dans la plupart des cas, il est redondant d'avoir deux valeurs possibles pour "no data"; la convention Django est d'utiliser la chaîne vide, pas NULL. Une exception est quand un CharField a les deux unique=True et blank = True set. Dans cette situation, null=True est nécessaire pour éviter les violations de contraintes uniques lors de l'enregistrement de plusieurs objets avec des valeurs Vierges.
je recommande donc cette configuration:
name = models.CharField(max_length=100, blank=True, default='')