Djangoにおけるnull=Trueとblank=Trueの違いは何ですか?
By khoanc, at: 2025年7月9日16:01
Estimated Reading Time: __READING_TIME__ minutes


ユースケース
-
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になります。
参照