ユースケース

  • null=True:

    空の値に対してデータベースにNULLを格納する場合に使用します。これは、DateTimeField、ForeignKeyなど、文字列以外のフィールドで一般的に使用されます。
     

  • blank=True:

    Djangoのフォームで空の入力を許可するために使用します。フィールドがオプションであるユーザーインターフェースで必要です。
     

  • 同時使用:

    フィールドが真にオプションの場合、通常は両方を使用します。

note = models.CharField(max_length=100, null=True, blank=True)

重要な注意事項

  • 文字列ベースのフィールド(CharField、TextField)の場合、Djangoでは以下をお勧めします。

    • blank=Trueのみを使用します。

    • null=Trueは避けてください。なぜならDjangoはNULLではなく空文字("")を格納するためです。

    • これにより、NULLと""という2つの「空」の値が混在して混乱することを回避できます。

簡単な例

class Profile(models.Model):
    bio = models.TextField(null=True, blank=True)  #
フォームで空のままにすることができ、DBにはNULLが格納されます。
    age = models.IntegerField(null=True, blank=True)  # フォームから省略することもでき、DBでもNULLになります。

参照