【问题标题】:django python blank=True still required [duplicate]django python blank=True 仍然需要 [重复]
【发布时间】:2013-12-19 19:40:17
【问题描述】:

在下面的代码中,不知何故,具有blank=True 的字段仍然是必需的,不能是Null

例子:

# Skill train timer
    class SkillTrainingTimer(models.Model):
    """
    Character Training timer,  keep track fo what skill is in training, and when it is done
    """
    character = models.ForeignKey(Character, unique=True)
    skill = models.ForeignKey(Skill, blank=True)
    trainingground = models.ForeignKey(TrainingGround, verbose_name='Training ground')
    timer = models.DateTimeField()

现在我做到了:

train_skill = SkillTrainingTimer(
        character=some_character_obj,
        trainingground=some_trainingground_obj,
        timer = fatetime.datetime.now()
)
train_skill.save()

开始抱怨技能不能是Null。我在很多模型和功能中都有这个,到目前为止我只是在其中转储了一些无用的数据。

【问题讨论】:

    标签: python django field


    【解决方案1】:

    null=True 在数据库中的列上设置 NULL。

    blank=True 确定表单中是否需要该字段。这包括管理员和您自己的自定义表单。如果 blank=True 则不需要该字段,而如果为 False,则该字段不能为空。希望这会有所帮助!

    【讨论】:

      【解决方案2】:

      您必须在字段定义中添加 null=True 参数,最好在同步数据库之前添加(或者您可以使用 South 迁移)

      skill = models.ForeignKey(Skill, blank=True, null=True)
      

      【讨论】:

      • 哇,这个答案是很久以前的。读《南方》让我怀旧
      【解决方案3】:

      对于外键,除了 NULL 之外实际上没有有效的空白值。实际上,在数据库方面,您需要为该外键输入 NULL 或某个有效值。

      因此,要允许输入外键,您还需要添加null=True。这会将空白值作为NULL 输入数据库as specified in the documentation

      但是,对于像models.String 这样的字段,建议使用简单的blank=True,其中除了NULL 之外还有另一个空白值,即空字符串。这使您可以使用NULL 来区分从未填充的字段和已用空白值填充的字段。区别很小,通常没有必要,但可以将其作为要求(尽管文档中不建议这样做)。

      【讨论】:

        猜你喜欢
        • 2021-01-28
        • 2015-07-09
        • 2013-08-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-06
        • 1970-01-01
        相关资源
        最近更新 更多