null、blankの違いと使い分け方を解説【モデルとの関係も】

djangoのモデルを操作している中で、nullとblankの設定について書かれたコードを見たことがあるかと思います。

何気ないように見えますが、しっかりと設定をしないとエラーが出てしまいます。

そこで今回は、nullとblankの使い分け方について説明していきます。
 nullはデータベース、blankはバリデーションと覚える

ポイントは、nullはデータベースに関連しており、blankはバリデーションに関係しているということを頭に入れることです。
nullについて

nullは、データベースにデータを入れるときの条件として使われます。

例えば、ブログを作る場合を考えてみましょう。

ブログには、日付の情報が入ることが一般的ですよね。

日付の情報がなかったら、新しい順でブログの投稿を並び替えたりすることができません。

こういった場合に、nullとしてデータを保存することを認めない時はモデルの中でフィールドを作るときにnull=Falseとします。

(モデルの中でフィールドを作るときは、デフォルトでnull=Falseになっていることが普通です。)
blankについて

次は、blankについてみていきましょう。

blankは、フォームにデータを入力するときのバリデーションをするときに使われます。

例えば、名前、メールアドレス、問い合わせ内容を入力して送信をするフォームがあったとします。

この時、blank=Trueにすると、名前などにデータが入っていなくてもエラーが出なくなってしまいます。

ですので、必須の入力項目としたい場合には、blank=Falseにするようにしましょう。
モデル(フィールド)とNull、Blankの設定の注意点のまとめ

最後に、モデル(フィールド)とNull、blankの設定において注意すべきポイントをまとめましたので、以下の表を参考にしてください。
フィールド Null=True Blank=True
CharField、TextFielなど(文字列) nullではなく、''(空白の文字データ)とみなされ、両者の区別が難しくなるのでTrueの設定はすべきではない

任意の入力フォームなどがある場合はTrueにしてもよい

IntegerFieldなど(数値) あまり好ましくはないが、データを入れない場合はTrueにしてもよい null=Trueとセットであれば、BlankもTrueにしてよい
DateTimeFielsなど(日付) あまり好ましくはないが、日付のデータを入れない場合はTrueにしてもよい null=Trueとセットであれば、BlankもTrueにしてよい

~Django無料講義~のご案内


Code for Djangoが、4時間超の無料Django講義をはじめました
 
・本を出版したCode for Djangoの
 製作者が作ったサイトです。
 
・Code for Djangoの内容も、
 動画で詳しく解説しています。
 
・動画は順次ふやしていきますので、
 ただで学び続けることが可能です。
 
・Djangoの効率的なスキルアップに
     是非お役立て下さい。


Created with