And*_*res 60 django django-models django-forms optional
我有一个这样的表格:
class My_Form(ModelForm):
class Meta:
model = My_Class
fields = ('first_name', 'last_name' , 'address')
Run Code Online (Sandbox Code Playgroud)
如何将地址字段设为可选?
mad*_*han 81
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
Run Code Online (Sandbox Code Playgroud)
Aks*_*aaj 77
猜猜你的模型是这样的:
class My_Class(models.Model):
address = models.CharField()
Run Code Online (Sandbox Code Playgroud)
你的表格:
class My_Form(ModelForm):
address = forms.CharField(required=False)
class Meta:
model = My_Class
fields = ('first_name', 'last_name' , 'address')
Run Code Online (Sandbox Code Playgroud)
你必须添加:
address = forms.CharField(required=False)
Run Code Online (Sandbox Code Playgroud)
@Anentropic对@Atma 答案的评论中的解决方案对我有用。我认为这也是最好的。
他的评论:
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)
Run Code Online (Sandbox Code Playgroud)
我还认为这是最漂亮的解决方案,因为你做同样的事情, putnull和blankto True,只要你有一个简单的char字段或者像我一样的ManyToMany字段。
field = models.CharField(max_length=9, default='', blank=True)
Run Code Online (Sandbox Code Playgroud)
只需在模型字段中添加blank = True,当您使用模型形式时就不需要。
小智 5
解决方案:同时使用blank=True, null=True。
my_field = models.PositiveIntegerField(blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)
解释:
如果你使用 null=True
`my_field = models.PositiveIntegerField(null=True)`
Run Code Online (Sandbox Code Playgroud)
那么 my_field 是必需的,在表单中用 * 反对它,你不能提交空值。
如果你使用 blank=True
`my_field = models.PositiveIntegerField(blank=True)`
Run Code Online (Sandbox Code Playgroud)
那么 my_field 不是必需的,在表单中没有 * 反对它,你不能提交值。但是会得到不允许的空字段。
笔记:
1) marking as not required and
2) allowing null field are two different things.
Run Code Online (Sandbox Code Playgroud)
专家提示:
Read the error more carefully than documentation.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
49493 次 |
| 最近记录: |