Django - 如何过滤ManyToManyField?
我不太确定怎么描述我想做的事情,所以标题可能不太准确。
我有两个模型,一个是用户(User),另一个是小组(Group)。小组里面有一个字段,叫做成员(members),这个字段是一个多对多关系,指向用户。
给定一个用户,我想找到这个用户所属的所有小组。
我想的办法是这样的:
groups = Group.objects.filter(user in members)
大概就是这样。虽然我知道这可能不太对。
我试着看了这个链接,但还是搞不清楚怎么用:http://docs.djangoproject.com/en/dev/topics/db/queries/#spanning-multi-valued-relationships
谢谢!
编辑:
我搞定了!
groups = Group.objects.filter(members__username=user.username)
2 个回答
1
最简单的方法可能就是这个:
groups = user1.group_set.all()
这个方法会给你一个可以遍历的查询集。
2
如果你已经有了用户的信息,想要获取这个用户所属的群组,那就从用户开始查询,而不是反过来查询;)
下面是一个例子:
james = User.objects.get(pk= 123)
james_groups = james.group_set.all()