Djangoモデルで外部キーフィールドをオプションにできますか


110

私はこのコードを持っています

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

私が本の3つの価値を持っていることは常に可能ではありません。時々私は主題や場所、または出版社がわからない場合。それから私はそれらを空に保ちたいです

しかし、私が持っている場合は、選択するための選択ボックスが必要です。そのように可能ですか

回答:


195

もちろん、blank=True, null=Trueオプションのままにしたいフィールドごとに追加するだけです

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

6
両方が必要ですか?null = Trueを使用するだけの欠点は何ですか?
ウォード

12
@WardC 2つの組み合わせは頻繁に発生します。通常、フォーム内のフィールドを空白にできるようにする場合は、データベースでそのフィールドにNULL値を許可する必要があるためです。例外はCharFieldsとTextFieldsで、Djangoでは決してNULLとして保存されません。空白の値は、空の文字列( '')としてDBに格納されます。
fang_dejavu

8
@区、両方は必要ありません。使うだけで十分null=Trueです。
Jam Risser 2017年

8
blank=Trueフォームの検証にとって重要です。このフィールドへのユーザー入力として空の文字列が許可されます。データベース列にNULLnull=Trueを許可します
セザール、

1
@cezarコメントは私の命を救った!ありがとう
po5i 2018
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.