【问题标题】:optional fields in django modelsdjango 模型中的可选字段
【发布时间】: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 字段是可选的。我该怎么做?

【问题讨论】:

    标签: django model


    【解决方案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='')

      【讨论】:

      • 好点。谢谢。
      猜你喜欢
      • 2015-10-10
      • 1970-01-01
      • 1970-01-01
      • 2013-04-09
      • 2015-01-23
      • 2011-08-25
      • 2019-12-24
      • 1970-01-01
      • 2017-01-26
      相关资源
      最近更新 更多