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


110

我有这个代码

subject      = models.ForeignKey(subjects)
location     = models.ForeignKey(location)
publisher    =  models.ForeignKey(publisher)

我不一定总能拥有三本书的价值。所以有时候,如果我不知道主题,位置或出版商。那我要让他们空着

但是如果有的话,我需要选择框进行选择。这样有可能吗

Answers:


195

当然,只需blank=True, null=True为要保留为可选的每个字段添加即可

subject = models.ForeignKey(subjects, blank=True, null=True)

6
都需要吗?仅使用null = True的不利之处是什么?
病房”

12
@WardC两者的组合是如此频繁,因为通常如果您要允许表单中的字段为空白,则还需要数据库以允许该字段的NULL值。CharFields和TextFields是一个例外,在Django中从不将其保存为NULL。空值作为空字符串('')存储在DB中。
fang_dejavu

8
@Ward,都不需要。仅仅使用就足够了null=True
Jam Risser

8
blank=True对于表单验证很重要。它将允许使用空字符串作为该字段中的用户输入。null=True将在数据库列中允许NULL值。
cezar

1
@cezar评论挽救了我的生命!谢谢
po5i
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.