私は文字列の中に何も挿入しないと、form field
というフォームに空の文字列として''
という文字列が取り込まれます。django nullと空の文字列
しかし、form field
の整数を何も挿入しないと、フォームには[null]
という文字が取り込まれます。
これは良い方法ですか?文字列はnull
でなければならないでしょうか?
私は文字列の中に何も挿入しないと、form field
というフォームに空の文字列として''
という文字列が取り込まれます。django nullと空の文字列
しかし、form field
の整数を何も挿入しないと、フォームには[null]
という文字が取り込まれます。
これは良い方法ですか?文字列はnull
でなければならないでしょうか?
を参照してください。文字列がnull
であることが許されている場合、空文字列を持つ方法は2つあります:null
と""
です。これはチェックする複数の値を与えます。これは非効率的で面倒です。
これはDjango conventionですが、あなたはへnull
の必要性がない限り""
より異なる何かを意味、すべてのアプリケーションにお勧めします。
文字列もNULLである必要がありますが、アプリケーションによって異なります。MySQL, better to insert NULL or empty string?を参照してください。
空のフィールドにNULLを格納する場合は、問題のフィールドにnull=True
を追加します。 https://docs.djangoproject.com/en/dev/ref/models/fields/#null
これはfield.empty_strings_allowed
属性に依存します。
一部のフィールドは、False
に上書きされています。しかしCharField
はそれをTrue
のままにします。したがって、Field._get_defaultはデフォルトとして空の文字列を返します。blank=True
でも。 None
をデフォルトとして取得する唯一の方法は、フィールドにnull=True
があることです。
したがって、空ではないはずのフィールドがあり、空白が決してそこに置かれないようにしていないとします。 objects.create
。 save
メソッドにself.full_clean()
(またはその他の検証)を入力する必要があります。
私のデータベースでフィールドをALLOW NULLに設定した場合、空の文字列ではなく、NULLとして格納されると思います。 Djangoが規則を持っているのは良いですが、Djangoがデータベースにアクセスする唯一のシステムであるとは限りません。別のアプリケーションがNULLを格納できる場合は、nullと空の文字列をチェックする必要があります。しかし、単純な ''値ではない ''はPythonで両方をチェックします。 – six8
これは 'djangoの練習'かもしれませんが、一般的に空の文字列を使って欠落したデータを表現するのは悪い習慣です。それがNULLのためのものです。私は本当にこれがdjangoの標準的な練習ではなかったと思います。 – Darren
テンプレートで 'None'を扱う必要がなく、ブランクのフォームフィールドを' None'にする必要がないので、早い時期に導入されたコンベンションです。それはすぐに物事を完了するためのショートカットだったが、それは私たちにこの "練習"をもたらした怠惰や時間の不足のため、今、良い練習としてそれを正当化する必要があります。それで、私たちは今、このものを扱う2つのフィールド属性を持っています。 –