我注意到您不能-
在+
. 您也不能使用,或./
*
related_name
:
|
.
如果您在 中包含上述任何字符related_name
,尽管 Djangomodels.py
会验证,但每当您进行查询查找时,它都会抛出类似的错误
Q(userprofile.user__place__managers=user)
SyntaxError: keyword can't be an expression
我想使用特殊字符的原因是因为我喜欢related_name
以{class_name}{field_name}
. 因此,例如对于UserProfile
模型类,我会做类似的事情
class UserProfile(models.Model)
user = models.OneToOneField(User, related_name='userprofile-user')
user_type = models.ManyToManyFields(UserType, related_name='userprofile-user_type')
这样,当我执行涉及向后跟踪关系的查询时,仍然知道我是如何向后跟踪它的。例如,如果我只是这样做
user_type = models.ManyToManyFields(UserType, related_name='user_type')
然后我可以UserType
从User
做访问User.objects.get(pk=1).user_type.all()
。但这使它看起来像是user_type
一个领域User
。
相反,如果我能做类似的事情User.objects.get(pk=1).userprofile-user_type.all()
,我就会知道我将从User
toUserProfile
到 to UserType
。
好吧,我的思维方式可能是少数,我认为大多数人只会这样做related_name='user_type'
,甚至可能使用 default user_type_set
。
另一个问题是:什么是好的命名风格related_name
?