Django模型不需要字段

我有这样一个表格:

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, blank=True, null=True) 

从@ Atma的回答评论@Anentropic的解决scheme为我工作。 而且我认为这也是最好的。

他的评论:

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) 

我也认为这是最好的解决scheme,因为你做同样的事情,把nullblankTrue ,天气你有一个简单的char字段,或者像我一样, ManyToMany字段。

再次感谢@Antropic。 🙂

PS我写了这个post,因为我不能评论(我有不到50的声望),但也因为我觉得他的评论需要更多的曝光。

PPS如果这个答案对你有帮助,请打开他的评论。

干杯:)