我有一个简单的模型,看起来像这样:

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/

10-16 17:30
查看更多