Django Forms:如果我在表单中使用 charfield,是不是需要使用 clean_field?
Posted
技术标签:
【中文标题】Django Forms:如果我在表单中使用 charfield,是不是需要使用 clean_field?【英文标题】:Django Forms: If I use charfield in form, do I need to use clean_field?Django Forms:如果我在表单中使用 charfield,是否需要使用 clean_field? 【发布时间】:2018-10-21 08:50:29 【问题描述】:在我的表单中,如果我有以下类,其中包含我的 charfield 'bio' 字段
class MyClass(forms.ModelForm):
bio = forms.CharField(max_length=1000
我是否需要进行以下验证,或者上面的 max_length=1000 是否已经涵盖了这一点?
def clean_bio(self):
bio=self.cleaned_data['bio']
max_length = 1000
if len(bio) > max_length:
raise forms.ValidationError('Please limit your bio to 1000 words')
return bio
【问题讨论】:
不,框架会为你做长度限制。 【参考方案1】:length
完全没有必要使用它,你的模型字段已经有一个max_length
,所以 Django 会确保这个值少于 1000 个字符。
注意:建议您在模型中使用models.TextField()
,因为您的字段可以接收很长的字符。您的表格将是:
forms.CharField(max_length=1000,widget=forms.Textarea())
【讨论】:
TextField 做了什么而 CharField 没有?如果它更长,它会提供错误验证吗? Nm,我发现了这个:***.com/questions/7354588/… 如果你也在模型中使用它,我只是警告你不要将它用于此类领域。即使在形式上,通过使用forms.CharField
,您必须使用小部件forms.Textarea()
,请参阅我的更新答案以上是关于Django Forms:如果我在表单中使用 charfield,是不是需要使用 clean_field?的主要内容,如果未能解决你的问题,请参考以下文章