我有一个这样的模型:
class Message(models.Model):
msg = models.CharField(max_length = 150)
我有一个用于插入字段的表单。实际上django允许空的空间,例如,如果我在字段中插入一个它工作的空间。但现在我想解决这个问题:该字段不是必需的,但如果用户插入空格,则验证应该失败。
我添加了:
class Message(models.Model):
msg = models.CharField(max_length = 150, blank = False)
但它不起作用。 这是什么错误?
答案 0 :(得分:12)
Whitespace不被视为空白。 blank 专门指无输入(即空字符串''
)。如果值仅由空格组成,则需要使用模型字段验证器来引发异常。有关详细信息,请参阅the documentation。
示例:
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])
答案 1 :(得分:1)
您需要创建自己的表单并在字段上执行自定义验证,以确保将重复的空格作为验证错误引发。像这样:
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