ManyToMany字段中的Django /用户访问

mik*_*une 2 django many-to-many

我正在使用User该类创建一个django应用程序django.contrib.auth.models.

我已经定义了一个模型,称为与用户具有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)
Run Code Online (Sandbox Code Playgroud)

我想检索用户所属的组到组的成员字段.

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

user_groups = user.group_set.all()
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

 'User' object has no attribute 'group_set'
Run Code Online (Sandbox Code Playgroud)

这有什么不对?

我终于找到了解决方案.我不得不用查询进行查询related_name,所以这里是:

groups_member = user.member.all()
Run Code Online (Sandbox Code Playgroud)

dan*_*era 7

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

user_groups = user.member.all()
Run Code Online (Sandbox Code Playgroud)

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

相反的关系是:

group_users = group.members.all()
Run Code Online (Sandbox Code Playgroud)

  • 好的,记得把答案检查为解决方案. (2认同)