2011-02-02 133 views
1

我不确定描述我试图这么做的最好方式是如何原谅我的头衔。Django - 过滤ManyToManyField?

我有两个模型,用户和组。组包含字段,成员,这是一个指向用户的ManyToManyField。

给定一个用户,我想查找该用户所属的所有组。

我的想法是做这样的事情:

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

如果你有用户,你想要他的组,然后开始查询它,而不是周围的方式;)

下面是一个例子:

james = User.objects.get(pk= 123) 
james_groups = james.group_set.all() 
+1

我相信这只会在ManyToManyField上设置related_name ='groups'属性时才起作用 – XORcist 2011-02-02 19:15:46

1

最简洁的方式可能是

groups = user1.group_set.all() 

它给你一个QuerySet是可迭代。