Django でモデル フィールドを追加するときは、通常は次のように記述します。
models.CharField(max_length=100, null=True, blank=True)
などについても同様ですForeignKey
。DecimalField
以下の基本的な違いは何でしょうか。
null=True
のみblank=True
のみnull=True
そしてblank=True
異なる( CharField
、、、)フィールドに関して、オプション 1、2、または 3 を使用する利点と欠点は何ですか?ForeignKey
ManyToManyField
DateTimeField
ベストアンサー1
null=True
DB の列にNULL
( ではなく)を設定します。やなどの Django フィールド タイプの空白値は、 DB にとして保存されます。NOT NULL
DateTimeField
ForeignKey
NULL
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
。