我有一个模型,其中两个字段设置为空白:
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
选项将被覆盖/忽略。
我试着在现有字段中添加最大长度、小部件和验证器,如下所示:
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
选项起作用,但动态最大长度不应用于窗体。
我试着查一下django的资料来源,但我是新来的,所以现在太多了。
我有办法做到这一点吗?
创建表单时,除了
max_length
、小部件和验证器之外,还应向CharField
添加以下参数:在Django中,模型中的
blank=True
与形式上的required=False
相关。相关问题 更多 >
编程相关推荐