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