このようなフォームがあります:
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を追加するだけで、モデルフォームを使用している場合は必要ありません。
@ 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)
また、これは最も美しい解決策であると思います。同じことを行うため、null
とblank
をTrue
に入れてください。天気は単純なchar
フィールドか、 ManyToMany
フィールドがあります。
繰り返しますが、多くの@Anentropicに感謝します。 :)
追伸コメントができなかったので(これは評判が50未満です)、また彼のコメントにはもっと露出が必要だと思うので、これを投稿として書きました。
P.P.S.この回答があなたを助けたなら、彼のコメントを書いてください。
乾杯:)