我注意到您不能-在+. 您也不能使用,或./*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(),我就会知道我将从UsertoUserProfile到 to UserType。
好吧,我的思维方式可能是少数,我认为大多数人只会这样做related_name='user_type',甚至可能使用 default user_type_set。
另一个问题是:什么是好的命名风格related_name?