スポンサーリンク

【Django】モデルのフィールドでblankとnullの組み合わせ

スポンサーリンク
スポンサーリンク
この記事は約2分で読めます。

 

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記事一覧

 

Django記事一覧

コメント