Django - 如何设置 blank = False, required = False
我有一个这样的模型:
class Message(models.Model):
msg = models.CharField(max_length = 150)
我还创建了一个表单来输入这个字段。实际上,Django 允许输入空格,比如如果我在字段里输入一个空格,它也是可以通过的。但是现在我想修正这个问题:这个字段不是必须的,但如果用户输入了空格,验证应该失败。
我添加了:
class Message(models.Model):
msg = models.CharField(max_length = 150, blank = False)
但是它没有起作用。哪里出错了呢?
2 个回答
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
13
Whitespace 这个东西并不算是 空白。这里的 空白 特指 没有输入(也就是一个空字符串 ''
)。如果你想检查一个值是否只是由空格组成,你需要用一个模型字段验证器,这个验证器会在值只包含空格时抛出异常。想了解更多细节,可以查看 文档。
示例:
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])