[英]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.