nullとblankについて
DjangoはモデルでDBにおけるテーブルを定義する。
モデルは複数のフィールドを持つことができ、各フィールドはDBのテーブルにおける各項目(カラム)に対応する。
nullとblankはモデルの各フィールドに設定できるオプションであり、NULLであることを許容するかを指定できる。
null=Trueの場合、DB上でNULLであることが許容される。
blank=Trueの場合、フォーム上でNULLであることが許容される。
nullとblankの組み合わせ
null=False, blank=False
デフォルトの状態。
DB上でのNULLを許可せず、フォーム上でのNULLを許可しない。
フォーム上で入力が必須であり、必ずDBに値が入らなければならない。つまるところデフォルトでは必須入力項目になる。
null=True, blank=False
DB上でのNULLを許可するが、フォーム上では許可しない。
フォーム入力が必須だが、DBにデータを保存する際にはデータがなくても良い。想定される使用パターンはあまりない。
また、CharField,TextFieldの文字列値ではnull=TrueにするとNULLと空の文字列 “” の2つが存在してしまうことになるため、推奨もされていない。
null=False, blank=True
DB上でのNULLを許可せず、フォーム上でのNULLを許可する。
フォーム入力後のPOSTではエラーが発生しないが、DBに保存する際には、保存する値がないのでエラーが発生する。
CharFieldやTextFieldあどの文字列を扱うフィールドで入力を任意にしたい場合はこの設定にする。
ただし、CharFieldやTextFieldではNULLではなく空の文字列をDB上に保存することができるので、エラーにはならない。
とは言っても、データがないことに対してNULLと空の文字列の2種類が存在してしまうので、これもDjangoのドキュメント上では推奨されていない。
null=True, blank=True
DB上でもフォーム上でもNULLを許容する。
入力が必須ではない項目に使用し、このオプションを適用したフィールドは入力は任意となる。
Django記事一覧
コメント