IT박스

Django modelform은 필수 필드가 아닙니다.

itboxs 2020. 12. 14. 07:58
반응형

Django modelform은 필수 필드가 아닙니다.


다음과 같은 양식이 있습니다.

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)

모델 필드에 blank = True를 추가하기 만하면 modelform을 사용할 때 필요하지 않습니다.


@Atma의 답변 에 대한 의견에서 @Anentropic의 솔루션 이 저에게 효과적 이었습니다. 그리고 그것도 최고라고 생각합니다.

그의 코멘트 :

null = True, blank = True는 ModelForm 필드가 필요함 = False

UserProfile수업의 ManyToMany 필드에 설정했고 완벽하게 작동했습니다.

UserProfile수업은 이제 다음과 같습니다 ( friends필드에 유의하십시오 ).

class UserProfile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    friends = models.ManyToManyField('self', null=True, blank=True)

I also think that this is the most beautiful solution since you do the same thing, put null and blank to True, weather you have a simple char field or, like I have, ManyToMany field.

Again, thanks alot @Anentropic. :)

P.S. I wrote this as a post since I couldn't comment (I have less than 50 reputation) but also because I think his comment needs more exposure.

P.P.S. If this answer helped you, please do upwote his comment.

Cheers :)


The above answers are correct; nevertheless due note that setting null=True on a ManyToManyField has no effect at the database level and will raise the following warning when migrating:

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

A good answer to this is explained in this other thread.

참고URL : https://stackoverflow.com/questions/16205908/django-modelform-not-required-field

반응형