问题描述
||
我有一个像这样的模型:
class Message(models.Model):
msg = models.CharField(max_length = 150)
我有一个表格来插入字段。实际上,django允许使用空格,例如,如果我在字段中插入一个有效的空格。但是,现在我要解决此问题:该字段不是必需的,但是如果用户插入空格,则验证将失败。
我已经添加:
class Message(models.Model):
msg = models.CharField(max_length = 150,blank = False)
但它不起作用。
怎么了
解决方法
空格不视为空白。空白专门指没有输入(即空字符串
\'\'
)。如果值仅包含空格,则将需要使用引发字段异常的模型字段验证器。有关详细信息,请参见文档。
例:
def validate_not_spaces(value):
if isinstance(value,str) and value.strip() == \'\':
raise ValidationError(u\"You must provide more than just whitespace.\")
class Message(models.Model):
msg = models.CharField(max_length=150,blank=False,validators=[validate_not_spaces])
, 您需要创建自己的表单并在字段上执行自定义验证,以确保将重复的空格作为验证错误引发。像这样:
import re
class MessageForm(form.ModelForm)
def clean_msg(self):
msg = self.cleaned_data[\'msg\']
if re.match(\'/[\\s]+$\',msg):
raise ValidationError(\"Spaces not allowed\")
return msg