简体   繁体   中英

Queryset for ManyToMany relation in Django

I can't understand how I should get queryset for groups, that contains user, I've tried _set, prefetch_select, but still without result.

class User(AbstractUser):
    ...

class Group(models.Model):
    ...
    Member_list = models.ManyToManyField(User, through='Member', related_name="Member_list")

class Member(models.Model):
    group = models.ForeignKey(Group)
    user = models.ForeignKey(User)
    ...

I need get all Groups associated with that user, like Groups where Member.objects.filter(user==request.user)

Im trying:

user = request.user
groups = user.group_set.all() # empty list :(
member = user.member_set.all() # works currectly, returns my 1 test group

I just create your base. Create group, user and connect them:

u = User.objects.create(name='user')
g = Group.objects.create()
m = Member.objects.create(group=g, user=u)

After this i can get user groups like this:

u.Member_list.all()
# output: [<Group: Group object>]

My base:

class User(models.Model):
    name = models.CharField(max_length=4)


class Group(models.Model):
    Member_list = models.ManyToManyField(User, through='Member', related_name="Member_list")


class Member(models.Model):
    group = models.ForeignKey(Group)
    user = models.ForeignKey(User)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM