不允许空字符串的Django CharField

18 投票
2 回答
5380 浏览
提问于 2025-04-17 23:55

有没有办法让一个字符字段(CharField)或者文本字段(TextField)不接受空字符串?我试着用 blank=False,但是没效果...

class Foo(models.Model):
    title = models.CharField(max_length=124, blank=False)

然后在执行完 syncdb 后,我运行 python manage.py shell,可以输入:

f = Foo()
f.save()

结果没有报错。这个对象的标题值是 ''(也就是空字符串)。我 不想 让它这样,我希望如果没有给 Foo() 一个非空字符串,它就会报错。有没有办法做到这一点?

我使用的是 Django 1.6

2 个回答

28

使用一个叫做 MinLengthValidator 的工具:

from django.core.validators import MinLengthValidator
...
title = models.CharField(max_length=10, validators=[MinLengthValidator(1)])
5

根据文档blank=False 主要是用来验证的,它只在表单层面起作用。

相关讨论:

撰写回答