gpt4 book ai didi

django - 如何在 Django 中创建一个非空的 CharField?

转载 作者:行者123 更新时间:2023-12-03 11:22:46 26 4
gpt4 key购买 nike

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

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与数据库无关。

更新:

您应该覆盖模型的干净功能,以进行自定义验证,因此您的模型定义将是:
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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com