2012-04-13 139 views
0

我正在使用类从django.contrib.auth.models制作django应用程序。Django/ManyToMany字段中的用户访问

我已经定义了一个模型,称为与用户的M2M关系。我很难检索给定用户所属的组。

这里的定义:

class group(models.Model): 
    user = models.ForeignKey(User,related_name = 'owner') # the owner 
    name = models.CharField(max_length=100) # name of the group 

    # members of the group 
    members = models.ManyToManyField(User,related_name = 'member') 

    def __unicode__(self): 
     return str(self.name) 

我想检索该用户所属的组的成员领域组。

这是失败的命令,试图检索特定用户所属的组 - 我不知道为什么 - 你能让我知道吗? (userUser实例)

user_groups = user.group_set.all() 

我得到的错误是:

'User' object has no attribute 'group_set' 

有什么不对吗?

SOLUTION

我终于找到了解决办法。我不得不做出与related_name查询,所以在这里它是:

groups_member = user.member.all() 

回答

4

因为很多一对多的关系是通过members属性,此属性有related_name属性,正确的语法是:

user_groups = user.member.all() 

(如果没有相关的name属性,这将是user_groups = user.members_set.all()

和反向关系是:

group_users = group.members.all() 
+0

作品 - 谢谢! – mikolune 2012-04-13 22:19:22

+2

好吧,记得检查答案作为解决方案。 – danihp 2012-04-13 22:42:49