0

南のドキュメントのこの部分では

「一部の列にはデフォルトが定義されていません」。

syncdb の使用時にデフォルト値を取得するモデル フィールドと取得しないモデル フィールドはどれですか? (南のドキュメントによるとBooleanField、デフォルト値は ですFalse)

Django モデル関連ドキュメントのモデル /ref/ および /topic/ 部分を検索しましたが、これが見つかりません。これはどこかに文書化されていますか?

4

1 に答える 1

1

ドキュメントにも答えが見つからなかったので、モデル フィールドのソース コードを確認しました。を除くすべてのモデル フィールドの「デフォルト デフォルト」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(デフォルトは空の文字列) です。

これが役立つことを願っています!

于 2014-01-11T10:08:47.680 に答える