Django:跨越多个多对多关系的查询

时间:2010-05-21 15:35:45

标签: django django-models

我已经设置了一些这样的模型:

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))

但这会产生错误:

  

a返回多行   用作表达式的子查询

我认为这是因为groups_to_notify正在检查几个组。

如何根据用户所属的群组获取针对用户的所有通知?

1 个答案:

答案 0 :(得分:10)

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

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