gpt4 book ai didi

python - Charfield 空错误

转载 作者:行者123 更新时间:2023-12-01 03:57:54 27 4
gpt4 key购买 nike

我已经设置了一个模型,根据两勺书的建议(第 6.2.4 节),将几个 Charfield 设置为 Blank=True 而不是 null。

class Supplier(models.Model):
unique_id = models.IntegerField(unique=True)
name = models.CharField(max_length=255, unique=True)
supplier_name = models.CharField(max_length=255, blank=True)

但是,当我尝试保存“supplier_name”字段为 None 的模型条目时,出现错误:django.db.utils.IntegrityError:“supplier_name”列中的空值违反了非空约束。处理这个问题的最佳方法是什么?我应该在字段声明中使用 null=True 还是将 None 转换为空字符串(不理想)?或者另一种方法?

最佳答案

如果您未指定supplier_name,例如Supplier.objects.create(unique_id=1, name='example'),那么我希望将 supplier_name 保存为空字符串。

但是,如果您明确设置 supplier_name=None,例如Supplier.objects.create(unique_id=2, name='example2', seller_name=None),那么 Django 将尝试保存 null,您将收到 IntegrityError

请注意,blank=True 选项会影响模型表单和 Django 管理。它不会影响底层数据库架构,也不会自动将 None 转换为 ''

Two Scoops 和 Django Docs 推荐 null=False 的原因是 '' 是“无数据”的唯一值。如果您设置了 null=True,则“无数据”有两个值:''None

使用 null=True 的一个很好的理由是,如果您想让字段唯一,但允许空值。

就您而言,很难说您应该做什么,因为您没有显示代码。理想情况下,请保持 null=True 以遵守 Django 约定。然后,您可以修改代码,以便不设置 supplier_name=None,或使用 supplier_name = seller_name 或 '' 进行转换。

关于python - Charfield 空错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37113594/

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