ManyToMany字段中的Django /用户访问

时间:2012-04-13 20:37:26

标签: django many-to-many

我正在使用User中的django.contrib.auth.models课程制作django应用。

我已经为用户定义了一个名为 group 的模型,该模型具有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'

这里有什么问题?

解决方案

我最终找到了解决方案。我必须使用related_name进行查询,所以这里是:

groups_member = user.member.all()

1 个答案:

答案 0 :(得分:7)

因为多对多关系是通过members属性,并且此属性具有related_name属性,所以正确的语法是:

user_groups = user.member.all()

(没有相关的名称属性,它将是user_groups = user.members_set.all()

反向关系是:

group_users = group.members.all()