J'ai un formulaire comme celui-ci :
class My_Form(ModelForm):
class Meta:
model = My_Class
fields = ('first_name', 'last_name' , 'address')
Comment puis-je définir le champ d'adresse comme facultatif ?
J'ai un formulaire comme celui-ci :
class My_Form(ModelForm):
class Meta:
model = My_Class
fields = ('first_name', 'last_name' , 'address')
Comment puis-je définir le champ d'adresse comme facultatif ?
Je suppose que votre modèle est comme ça :
class My_Class(models.Model):
address = models.CharField()
Votre formulaire pour Django version < 1.8 :
class My_Form(ModelForm):
address = forms.CharField(required=False)
class Meta:
model = My_Class
fields = ('first_name', 'last_name' , 'address')
Votre formulaire pour Django version > 1.8 :
class My_Form(ModelForm):
address = forms.CharField(blank=True)
class Meta:
model = My_Class
fields = ('first_name', 'last_name' , 'address')
field = models.CharField(max_length=9, default='', blank=True)
Il suffit d'ajouter blank=True
dans le champ de votre modèle et il ne sera pas nécessaire lorsque vous utilisez modelforms
.
"Si le champ du modèle a blank=True
alors le champ du formulaire est défini comme étant faux. Autrement, required=True
."
source : https://docs.djangoproject.com/en/3.1/topics/forms/modelforms/#field-types
Solution : utilisez les deux blank=True
, null=True
.
my_field = models.PositiveIntegerField(blank=True, null=True)
Explication :
Si vous utilisez null=True
my_field = models.PositiveIntegerField(null=True)
entonces my_field
est nécessaire, avec *
à côté d'elle dans le formulaire et vous ne pouvez pas soumettre la valeur vide.
Si vous utilisez blank=True
my_field = models.PositiveIntegerField(blank=True)
entonces my_field
n'est pas nécessaire, il n'y aura pas de *
à côté de lui dans le formulaire et vous ne pouvez pas soumettre la valeur. Mais il obtiendra null field not allowed.
Remarque : le fait de marquer comme non requis et d'autoriser les champs nuls sont deux choses différentes.
Conseil de pro : Lisez l'erreur plus attentivement que la documentation.
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.