2016-12-22 4 views
1

Как указано в PEP8, следует назвать классы, которые имеют несколько слов в виде верблюда (например, ProfileAttributeGroup) и использовать символы подчеркивания для переменных (profile_attribute_group).django - подчеркивание внешних ключей - за и против

Однако, когда дело доходит до django и обратных отношений (и шаблонов), мы вынуждены использовать нижнее имя классов.

Например, если у нашего ProfileAttributeGroup есть один к одному ключ к модели Profile, обратный поиск будет profile.profileattributegroup.

Хорошо, мы можем переопределить это; но эта нижняя шкала также происходит в шаблонах DetailView и UpdateView и в sql-соединениях (например, someattr.filter(profileattributegroup__isnull=False)), и мы ничего не можем с этим поделать.

Это заставляет меня думать, что имеет смысл просто вводить строчные имена внешних ключей, не добавляя там никаких подчеркиваний. Таким образом, мне не нужно будет помнить, когда следует использовать profile_attribute_group или profileattributegroup.

Но явное игнорирование подчеркиваний противоречит PEP8.

Мой вопрос в том, имеет ли кто-нибудь еще мои сомнения? И есть ли в будущем недостатки игнорирования подчеркиваний, о которых я не думал?

+0

Я не понимаю ваши рассуждения. Django определяет внешние ключи как ** поля **, следовательно, вы должны следовать соглашению для полей, т. Е. Lowercase_with_underscore. Или вы пишете код типа 'class Person (Model): WeirdNameWithCaps = SomeField (...)'? – Bakuriu

ответ

0

Конечно, вы можете с этим справиться, если это вас так сильно беспокоит. Все поля отношений, которые автоматически определяют обратное отношение, также позволяют переопределить это значение по умолчанию, указав related_name. Поэтому, если вам действительно не нравится profile.profileattributegroup, определите поле «один-к-одному» с помощью related_name='profile_attribute_group'.

Смежные вопросы