django python blank = True仍然需要

django python blank=True still required

本问题已经有最佳答案,请猛点这里访问。

在下面的代码中的一个领域,"这仍然是需要的和不能blank=TrueNull

例子:

1
2
3
4
5
6
7
8
9
# 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()

现在我的:

1
2
3
4
5
6
train_skill = SkillTrainingTimer(
        character=some_character_obj,
        trainingground=some_trainingground_obj,
        timer = fatetime.datetime.now()
)
train_skill.save()

它不能被Nullcomplaining技能课程。我有这个在很多功能和操作系统的模型和一些无用的数据dumped远我就在那。


null=True在数据库的列上设置空值。

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


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

因此,要允许输入外键,还需要添加null=True。这将在数据库中输入空白值,如文档中指定的NULL

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


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

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