[英]Why is “blank” is missing in django.forms.CharField, but present in django.db.models.CharField?
我有一个模型,其中两个字段设置为空白:
class News(models.Model):
title = models.CharField(max_length = 50, blank = True)
info = models.TextField(blank = True)
事实是,我想在构建表单时动态设置max_length
,所以我有一个自定义表单:
class NewsForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(NewsForm, self).__init__(*args, **kwargs)
title_max_length = 20
info_max_length = 100
self.fields["title"] = forms.CharField(max_length = title_max_length)
self.fields["info"] = forms.CharField(
widget = forms.Textarea,
validators = [
MaxLengthValidator(info_max_length)
]
)
注意:这两个长度值实际上是从数据库中获取的,但是我选择不包括该代码以使示例简短。
当我使用这些自定义字段时, blank
选项将被覆盖/忽略。
我尝试将max_length,小部件和验证器添加到现有字段中,如下所示:
class NewsForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(NewsForm, self).__init__(*args, **kwargs)
title_max_length = 20
info_max_length = 100
self.fields["title"].max_length = title_max_length
self.fields["info"].widget = forms.Textarea
self.fields["info"].validators = [MaxLengthValidator(info_max_length)]
这样做时,可以使用blank
选项,但是动态max_length不会应用于表单。
我尝试查看django来源,但是我很新,因此现在无法接受。
有什么办法可以做到这一点?
创建表单时,除了max_length
,小部件和验证器外,向CharField
添加以下参数:
forms.CharField(...,required = False)
在Django中,模型中的blank=True
与表单中的required=False
相关。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.