Django中的智能查询,与用户的ManyToMany关系

时间:2011-03-28 22:35:17

标签: python django orm django-orm

我正在开发一个目前有很多ManyToMany关系的应用程序(最终会有更多关系),我正在尝试用巧妙的方法(阅读:正确的方法)来准确查询ORM加入数据。

以下是我所拥有的以及我需要做的事情的样本。我为伪代码道歉。

ProjectModel:
    owner = ForeignKey(User) #just one user
    people = ManyToMany(User) #multiple users and theoretically can also contain the owner

现在我想要查询的是每个用户的列表,这些用户是当前用户拥有的项目中的“人”。

我没有真正的线索如何做到这一点。 __contains似乎并不适合这个...所以我认为我的选择基本上只是查询每个项目并自己进行迭代。但如果我知道如何通过ORM / SQL获得它,那将会更加丰富。

谢谢!

1 个答案:

答案 0 :(得分:7)

# users in projects owned by request.user  
users = User.objects.filter(projectmodel__owner=request.user).distinct()

如果有很多m2ms,并且您在related_name字段中定义了people,那么您将在反向查找中使用而不是projectmodel