• 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の効率的なスキルアップに、
       是非お役立て下さい。