gpt4 book ai didi

django - Django 模型中的可空文本字段或空字符串?

转载 作者:行者123 更新时间:2023-12-04 04:58:06 25 4
gpt4 key购买 nike

据我了解 this database design question ,您应该谨慎使用可空字段,并每次都权衡是否重新考虑数据设计更好。

但是假设在某些特定情况下,解决方案是允许文本字段包含空值。说,有 user table 上还有 short_bio由 Django 中的 TextField 表示的列,不是强制性的。创建单独的 user_bio 没有意义表,对吗?

现在的问题是,空值应该是空字符串还是空标记 ?每个选项的优缺点是什么? Django 如何与数据库一起工作,是否有任何细节可以发挥作用?

需要注意的是django-lint当前使用 null=True 报告 CharField 和 TextField 实例.

相反,some developers 认为“为留空的字段存储空字符串是个坏主意” .

最佳答案

我认为,当“空字符串”表示“无值”时,应使用空字符串以避免混合空值和表示相同内容的空白(例如,在搜索或比较中:在某些 DBMS 中,您无法将 NULL 与 NULL 进行比较直接,您必须使用 IS NULL 运算符)。

使用空字符串还可以更轻松地在报告和其他使用 'short_bio' 而不通过 DOM(例如,使用 objects.values('short_bio') )的内容中“按原样”使用它,而无需在 '' 中转换 Null。

此外,Django docs状态:

Avoid using null on string-based fields such as CharField and TextField unless you have an excellent reason. If a string-based field has null=True, that means it has two possible values for “no data”: NULL, and the empty string. In most cases, it’s redundant to have two possible values for “no data;” Django convention is to use the empty string, not NULL.

关于django - Django 模型中的可空文本字段或空字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5015063/

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