没有空字符串的 Django CharField
Posted
技术标签:
【中文标题】没有空字符串的 Django CharField【英文标题】:Django CharField without empty strings 【发布时间】:2014-05-04 06:01:14 【问题描述】:有没有办法制作一个不接受空字符串的 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
【问题讨论】:
【参考方案1】:使用MinLengthValidator
:
from django.core.validators import MinLengthValidator
...
title = models.CharField(max_length=10, validators=[MinLengthValidator(1)])
【讨论】:
【参考方案2】:根据documentation,blank=False
纯粹与验证相关,仅适用于表单级别。
查看相关主题:
Django model blank=False does not work? Why are blank and null distinct options for a django model?【讨论】:
@gyeh 不客气。如果在模型字段级别检查非空值很重要,请考虑制作验证器,请参阅***.com/a/6195014/771848。 @alcxe 是的,通常我会这样做,但我正在尝试创建一个 django-admin 命令来填充数据库,并且我想确保它不接受来自模型端。但我可以检查命令本身中的空字符串。以上是关于没有空字符串的 Django CharField的主要内容,如果未能解决你的问题,请参考以下文章