django 模型中的可选字段

Posted

技术标签:

【中文标题】django 模型中的可选字段【英文标题】:optional fields in django models 【发布时间】:2013-04-27 07:18:07 【问题描述】:

我在 django 中有以下模型。

class Link(models.Model):
    name = models.CharField(max_length=100)
    url = models.CharField(max_length=100)
    tag = models.CharField(max_length=100)

    def __unicode__(self):
        return self.name

我需要 url 字段是可选的。我该怎么做?

【问题讨论】:

【参考方案1】:

添加属性blank=True。或者,您还可以使用 null=True 使该字段为 NULLable。

【讨论】:

【参考方案2】:

不建议将null=True 设置为CharField,您可以从 django 文档中看到:

避免在基于字符串的字段(例如 CharField 和 TextField)上使用 null。如果基于字符串的字段具有 null=True,这意味着它有两个可能的“无数据”值:NULL 和空字符串。在大多数情况下,“无数据”有两个可能的值是多余的; Django 约定是使用空字符串,而不是 NULL。一个例外是当 CharField 同时设置了 unique=True 和 blank=True 时。在这种情况下,需要 null=True 以避免在保存具有空白值的多个对象时违反唯一约束。

所以我会推荐这个配置:

name = models.CharField(max_length=100, blank=True, default='')

【讨论】:

好点。谢谢。

以上是关于django 模型中的可选字段的主要内容,如果未能解决你的问题,请参考以下文章

SpringFox Swagger - 模型中的可选和必填字段

Django 过滤器是不是存在 json 中的可选键

对如何使 Django 模型字段可选的感到困惑

我可以在 Django 模型中将外键字段设为可选吗

Django:过滤管理模板中的空模型条目

Spring boot:Query方法中的可选参数查询