南のドキュメントのこの部分では、
「一部の列にはデフォルトが定義されていません」。
syncdb の使用時にデフォルト値を取得するモデル フィールドと取得しないモデル フィールドはどれですか? (南のドキュメントによるとBooleanField
、デフォルト値は ですFalse
)
Django モデル関連ドキュメントのモデル /ref/ および /topic/ 部分を検索しましたが、これが見つかりません。これはどこかに文書化されていますか?
南のドキュメントのこの部分では、
「一部の列にはデフォルトが定義されていません」。
syncdb の使用時にデフォルト値を取得するモデル フィールドと取得しないモデル フィールドはどれですか? (南のドキュメントによるとBooleanField
、デフォルト値は ですFalse
)
Django モデル関連ドキュメントのモデル /ref/ および /topic/ 部分を検索しましたが、これが見つかりません。これはどこかに文書化されていますか?
ドキュメントにも答えが見つからなかったので、モデル フィールドのソース コードを確認しました。を除くすべてのモデル フィールドの「デフォルト デフォルト」BinaryField
は、このメソッドによって提供されます。
def get_default(self):
"""
Returns the default value for this field.
"""
if self.has_default():
if callable(self.default):
return self.default()
return force_text(self.default, strings_only=True)
if (not self.empty_strings_allowed or (self.null and
not connection.features.interprets_empty_strings_as_nulls)):
return None
return ""
get_prep_value
したがって、ほとんどのフィールド タイプの「デフォルト デフォルト」は、空の文字列の処理方法によって決まります。のさまざまな実装はget_prep_value
、同じソース ファイルにあります。ほとんどのフィールドには「デフォルトのデフォルト」がないように見えます。これは、ほとんどの実装がget_prep_value
空の文字列の処理方法がわからないためです。このルールの注目すべき例外は、BooleanField
(デフォルトは False)、CharField
(デフォルトは空の文字列)、およびTextField
(デフォルトは空の文字列) です。
これが役立つことを願っています!