我有一个简单的模型如下:
class Group(models.Model):
name = models.CharField(max_length = 100, blank=False)
我希望这会引发一个完整性错误,但它不会:
group = Group() # name is an empty string here
group.save()
如何确保名称变量设置为非空的值?即使数据库拒绝任何保存空字符串的try ?
我有一个简单的模型如下:
class Group(models.Model):
name = models.CharField(max_length = 100, blank=False)
我希望这会引发一个完整性错误,但它不会:
group = Group() # name is an empty string here
group.save()
如何确保名称变量设置为非空的值?即使数据库拒绝任何保存空字符串的try ?
从本例中的Django docs开始,您的name
将存储为空字符串,因为默认情况下null
字段选项为FALSE.如果要定义自定义默认值,请使用default
字段选项.
name = models.CharField(max_length=100, blank=False, default='somevalue')
在这个页面上,您可以看到blank
与数据库无关.
Update:个
您应该覆盖模型的CLEAN函数,以进行自定义验证,因此您的模型定义将为:
class Group(models.Model):
name = models.CharField(max_length=100, blank=False)
def clean(self):
from django.core.exceptions import ValidationError
if self.name == '':
raise ValidationError('Empty error message')
或者你可以把ValidationError
换成别的.然后在你打group.save()
之前,先打group.full_clean()
,然后再打clean()
其他与验证相关的内容为here.