マニュアル: Django

投稿日: 更新日:

公式

認証認可

この記事に書いている通りで良さげ。

モデルのnullとblank

これを自分の経験と合わせると次のような感じかなと。

blank null 使う場面
False False 必須項目
True True 任意項目で、nullである意味があるもの
True False 任意項目で、nullである意味がないもの
False True なし(使わない)

任意項目について説明すると、例えばURLのクエリパラメータは https://example.com/?foo= と、 https://example.com/ のように、 「キーがセットされていない」と、「キーが空である」は明示的に区別されます。

これを区別しないといけないものは、blank=True, null=Trueにします。 しかしそれ以外の場合、具体的には「入力なし=空文字列として問題がない」場合は、 blank=True, null=Falseとするといいです(defaultも設定するといいかも)。

DB的にはnullは悪です。せいぜい必要悪です。 なのでnull=Trueとするのは慎重にした方がいいです。