PEP8では、いくつかの単語にキャメルケース(例:ProfileAttributeGroup
)を付けたクラスに名前を付け、変数にアンダースコアを使用します(profile_attribute_group
)。django - 外部キーを強調する - 賛否両論
しかし、ジャンゴとリバースリレーションシップ(およびテンプレート)に関しては、クラスの小文字の名前を使用する必要があります。
例えば、ProfileAttributeGroup
にProfile
モデルの1対1のキーがある場合、逆引き参照はprofile.profileattributegroup
になります。
これで上書きできます。この小文字はDetailView
テンプレートとUpdateView
テンプレートでもSQL結合でも発生します(例:someattr.filter(profileattributegroup__isnull=False)
)。これについては何もできません。
これは、そこにアンダースコアを追加することなく、外部キー名を小文字にすることが理にかなっていると思います。このようにして、いつprofile_attribute_group
またはprofileattributegroup
を使用するかを覚えておく必要はありません。
ただし、アンダースコアを明示的に無視するとPEP8と矛盾します。
私の質問は他に誰かが疑問を持っていましたか?そして、私が考えなかったアンダースコアを無視するという将来の弱点はありますか?
私はあなたの推理を得ていません。 Djangoは外部キーを**フィールド**と定義しています。したがって、フィールド(lowercase_with_underscore)の規約に従ってください。あるいは 'Person(Model):WeirdNameWithCaps = SomeField(...)'のようなコードを書いていますか? – Bakuriu