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

Python Django-如何设置blank=False,required=False,python,django,Python,Django,我有一个这样的模型: class Message(models.Model): msg = models.CharField(max_length = 150) 我有一个表格可以插入这个字段。实际上,django允许空白,例如,如果我在字段中插入一个空格,它就可以工作。但现在我想解决这个问题:该字段不是必需的,但是如果用户插入空格,验证就会失败 我补充说: class Message(models.Model): msg = models.CharField(max_lengt

我有一个这样的模型:

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

Blank意味着一个空字符串(与空值相反)——带空格的字符串不是空的。如果要防止字段只有空格,我认为您必须编写自己的自定义清理方法。我的编辑已被拒绝,但除了
value.strip()之外,您还应该实现
isinstance(value,str)
check==''
因为如果它检查的字段值是
None
类型,那么您的原始函数将中断(您不能在其上调用
.strip()
)。没问题-前几天我实现了这一点,所以这是我捕获它的唯一原因。但是,当我们这样做的时候,有没有理由不做
not value.strip()
而不是
value.strip()==''