Django - 如何设置blank = False,required = False

时间:2011-06-01 00:22:07

标签: python django

我有一个这样的模型:

class Message(models.Model):
    msg = models.CharField(max_length = 150)

我有一个用于插入字段的表单。实际上django允许空的空间,例如,如果我在字段中插入一个它工作的空间。但现在我想解决这个问题:该字段不是必需的,但如果用户插入空格,则验证应该失败。

我添加了:

class Message(models.Model):
    msg = models.CharField(max_length = 150, blank = False)

但它不起作用。 这是什么错误?

2 个答案:

答案 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