2011-03-28 71 views
1

我的工作,目前已经有很多多对多关系的应用程序(并最终将有更多),我试图想聪明的方式(读多对多的关系:在正确的方式)准确地查询ORM的JOINed数据。智能查询Django中,与用户

这里是什么,我有一个样品,我需要做什么。我为伪码道歉。

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

现在我想查询是每一个用户谁是“人”在当前用户拥有项目的清单。

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

谢谢!

回答

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

如果有很多m2ms的,你已经在你的people场限定的related_name,这就是你会在你的反向查找,而不是projectmodel使用什么。

+1

辉煌。巧妙地完成。这正是我所期待的。似乎工作。 – 2011-03-28 22:50:20