2010-05-21 152 views
4

我有一些车型设置是这样的:Django的:查询跨越多个许多一对多的关系

class AppGroup(models.Model): 
    users = models.ManyToManyField(User) 

class Notification(models.Model): 
    groups_to_notify = models.ManyToManyField(AppGroup) 

用户对象来自Django的认证系统。

现在,我正在尝试获取与当前用户所属的组相关的所有通知。我曾尝试..

notifications = Notification.objects.filter(groups_to_notify=AppGroup.objects.filter(users=request.user)) 

但是,这给出了一个错误:

more than one row returned by a subquery used as an expression

我估计是因为groups_to_notify的检查,对几组。

如何根据用户所属的组来抓取所有通知?

回答

6

使用双下划线格式来遍历关系。

Notification.objects.filter(groups_to_notify__users=request.user) 
+0

谢谢!在我看来,我在某个时候尝试过,并没有奏效。它现在虽然工作! – Brant 2010-05-21 17:00:11