Как указано в PEP8, следует назвать классы, которые имеют несколько слов в виде верблюда (например, ProfileAttributeGroup
) и использовать символы подчеркивания для переменных (profile_attribute_group
).django - подчеркивание внешних ключей - за и против
Однако, когда дело доходит до django и обратных отношений (и шаблонов), мы вынуждены использовать нижнее имя классов.
Например, если у нашего ProfileAttributeGroup
есть один к одному ключ к модели Profile
, обратный поиск будет profile.profileattributegroup
.
Хорошо, мы можем переопределить это; но эта нижняя шкала также происходит в шаблонах DetailView
и UpdateView
и в sql-соединениях (например, someattr.filter(profileattributegroup__isnull=False)
), и мы ничего не можем с этим поделать.
Это заставляет меня думать, что имеет смысл просто вводить строчные имена внешних ключей, не добавляя там никаких подчеркиваний. Таким образом, мне не нужно будет помнить, когда следует использовать profile_attribute_group
или profileattributegroup
.
Но явное игнорирование подчеркиваний противоречит PEP8.
Мой вопрос в том, имеет ли кто-нибудь еще мои сомнения? И есть ли в будущем недостатки игнорирования подчеркиваний, о которых я не думал?
Я не понимаю ваши рассуждения. Django определяет внешние ключи как ** поля **, следовательно, вы должны следовать соглашению для полей, т. Е. Lowercase_with_underscore. Или вы пишете код типа 'class Person (Model): WeirdNameWithCaps = SomeField (...)'? – Bakuriu