我有一个简单的模型,看起来像这样:
class Group(models.Model):
name = models.CharField(max_length = 100, blank=False)
我希望这会引发完整性错误,但不会:
group = Group() # name is an empty string here
group.save()
如何确保将name变量设置为非空值?即使数据库拒绝任何保存空字符串的尝试?
最佳答案
在这种情况下,通过Django docs,您的name
将存储为空字符串,因为null
字段选项默认为False。如果要定义自定义默认值,请使用default
字段选项。
name = models.CharField(max_length=100, blank=False, default='somevalue')
在此页面上,您可以看到
blank
与数据库无关。更新:
您应该重写模型的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。
关于django - 如何在Django中创建非空CharField?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6940499/