Django の null=True と blank=True の違いは何ですか? 質問する

Django の null=True と blank=True の違いは何ですか? 質問する

Django でモデル フィールドを追加するときは、通常は次のように記述します。

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

などについても同様ですForeignKeyDecimalField以下の基本的な違いは何でしょうか。

  1. null=Trueのみ
  2. blank=Trueのみ
  3. null=Trueそしてblank=True

異なる( CharField、、、)フィールドに関して、オプション 1、2、または 3 を使用する利点と欠点は何ですか?ForeignKeyManyToManyFieldDateTimeField

ベストアンサー1

null=TrueDB の列にNULL( ではなく)を設定します。やなどの Django フィールド タイプの空白値は、 DB にとして保存されます。NOT NULLDateTimeFieldForeignKeyNULL

blankフォームでフィールドが必須かどうかを決定します。これには、管理フォームとカスタム フォームが含まれます。必須blank=Trueの場合はフィールドは必須ではありませんが、必須の場合はFalseフィールドを空白にすることはできません。

これら 2 つの組み合わせが非常に頻繁に使用されるのは、通常、フォーム内のフィールドを空白にできるようにする場合は、データベースでもNULLそのフィールドの値を許可する必要が生じるためです。例外はCharFieldと でTextField、Django ではとして保存されることはありませんNULL。空白の値は、空の文字列 ( ) として DB に保存されます''

いくつかの例:

models.DateTimeField(blank=True) # raises IntegrityError if blank

models.DateTimeField(null=True) # NULL allowed, but must be filled out in a form

明らかに、これら 2 つのオプションを使用するのは論理的に意味がありません (ただし、null=True, blank=Falseフォームでフィールドを常に必須にし、シェルなどを通じてオブジェクトを処理する場合はオプションにしたい場合などには、使用例があるかもしれません)。

models.CharField(blank=True) # No problem, blank is stored as ''

models.CharField(null=True) # NULL allowed, but will never be set as NULL

CHARおよびTEXT型は Django によって として保存されることはないNULLため、 はnull=True不要です。ただし、これらのフィールドの 1 つを に手動で設定して、None強制的に として設定することができますNULL。それが必要になる可能性があるシナリオの場合は、 を含める必要がありますnull=True

おすすめ記事