正如PEP8所述,人们应该将具有多个单词的类命名为camelcase(例如ProfileAttributeGroup
),并使用下划线表示变量(profile_attribute_group
)。
然而,当谈到django和反向关系(和模板)时,我们被迫使用小写的类名。
例如,如果我们的ProfileAttributeGroup
具有Profile
模型的一对一密钥,则反向查找将为profile.profileattributegroup
。
好的,我们可以覆盖那一个;但是这种小写也发生在DetailView
和UpdateView
模板以及sql连接中(例如someattr.filter(profileattributegroup__isnull=False)
),我们无能为力。
这让我觉得只有小写的外键名称才有意义,而不会在那里添加任何下划线。这样我就不必记住何时使用profile_attribute_group
或profileattributegroup
。
但明确忽略下划线与PEP8相矛盾。
我的问题是,还有其他人对我有疑虑吗?是否有任何未来的缺点,忽略我没想到的下划线?
答案 0 :(得分:0)
如果它困扰你那么肯定你可以做些什么。自动定义反向关系的所有关系字段也允许您通过指定related_name
来覆盖该默认值。因此,如果您真的不喜欢profile.profileattributegroup
,请使用related_name='profile_attribute_group'
定义一对一字段。