web-dev-qa-db-ja.com

Django modelform NOT必須フィールド

このようなフォームがあります:

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

住所フィールドをオプションとして配置するにはどうすればよいですか?

56
Andres

モデルは次のようになります。

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')
69
Akshar Raaj
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
79
madzohan

以下を追加する必要があります。

address = forms.CharField(required=False)
5
Atma
field = models.CharField(max_length=9, default='', blank=True)

モデルフィールドにblank = Trueを追加するだけで、モデルフォームを使用している場合は必要ありません。

4

@ Atma's answer に関するコメントからの@Anentropicのソリューションは、私にとってはうまくいきました。そして、私もそれが最高だと思います。

彼のコメント:

null = True、blank = Trueの場合、ModelFormフィールドはrequired = 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)

また、これは最も美しい解決策であると思います。同じことを行うため、nullblankTrueに入れてください。天気は単純なcharフィールドか、 ManyToManyフィールドがあります。

繰り返しますが、多くの@Anentropicに感謝します。 :)

追伸コメントができなかったので(これは評判が50未満です)、また彼のコメントにはもっと露出が必要だと思うので、これを投稿として書きました。

P.P.S.この回答があなたを助けたなら、彼のコメントを書いてください。

乾杯:)

3
Filip Savic