Неверное поле модели Django

У меня есть такая форма:

class My_Form(ModelForm):
    class Meta:
        model = My_Class
        fields = ('first_name', 'last_name' , 'address')

Как я могу поместить поле адреса как необязательное?

Ответ 1

Угадайте, что ваша модель выглядит так:

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')

Ответ 2

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

Ответ 3

Вы должны добавить:

address = forms.CharField(required=False)

Ответ 4

field = models.CharField(max_length=9, default='', blank=True)

Просто добавьте пустое = True в поле вашей модели, и это не потребуется при использовании форм моделей.

Ответ 5

@Решение для антропологов из комментария @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. Если бы этот ответ помог вам, прокомментируйте его комментарий.

Приветствия:)

Ответ 6

Приведенные выше ответы верны; тем не менее, следует учесть, что настройка null=True для ManyToManyField не влияет на уровень базы данных и выдает следующее предупреждение при миграции:

(fields.W340) null has no effect on ManyToManyField.

Хороший ответ на этот вопрос объясняется в другой теме.