У меня есть такая форма:
class My_Form(ModelForm):
class Meta:
model = My_Class
fields = ('first_name', 'last_name' , 'address')
Как я могу поместить поле адреса как необязательное?
У меня есть такая форма:
class My_Form(ModelForm):
class Meta:
model = My_Class
fields = ('first_name', 'last_name' , 'address')
Как я могу поместить поле адреса как необязательное?
Угадайте, что ваша модель выглядит так:
class My_Class(models.Model):
address = models.CharField()
Ваша форма:
class My_Form(ModelForm):
address = forms.CharField(required=False)
class Meta:
model = My_Class
fields = ('first_name', 'last_name' , 'address')
class My_Form(forms.ModelForm):
class Meta:
model = My_Class
fields = ('first_name', 'last_name' , 'address')
def __init__(self, *args, **kwargs):
super(My_Form, self).__init__(*args, **kwargs)
self.fields['address'].required = False
Вы должны добавить:
address = forms.CharField(required=False)
field = models.CharField(max_length=9, default='', blank=True)
Просто добавьте пустое = True в поле вашей модели, и это не потребуется при использовании форм моделей.
@Решение для антропологов из комментария @Atma answer работало для меня. И я думаю, что это тоже лучший.
Его комментарий:
null = True, пусто = True приведет к тому, что поле ModelForm будет обязательным = False
Я просто установил его в поле ManyToMany в моем классе UserProfile
, и он работал безупречно.
Теперь мой класс UserProfile
выглядит следующим образом (обратите внимание на поле friends
):
class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
friends = models.ManyToManyField('self', null=True, blank=True)
Я также считаю, что это самое прекрасное решение, так как вы делаете то же самое, поместите null
и blank
в True
, погода у вас есть простое поле char
или, как и у меня, ManyToMany
.
Опять же, спасибо большое @Энтропий.:)
P.S. Я написал это как сообщение, так как не мог прокомментировать (у меня менее 50 репутации), но также потому, что я думаю, что его комментарий требует большей экспозиции.
P.P.S. Если бы этот ответ помог вам, прокомментируйте его комментарий.
Приветствия:)
Приведенные выше ответы верны; тем не менее, следует учесть, что настройка null=True
для ManyToManyField не влияет на уровень базы данных и выдает следующее предупреждение при миграции:
(fields.W340) null has no effect on ManyToManyField.
Хороший ответ на этот вопрос объясняется в другой теме.