Django 通过多个多个关系选择对象

Django 通过多个多个关系选择对象,django,manytomanyfield,Django,Manytomanyfield,这似乎是一个简单的问题,但在任何地方都没有答案,也没有明显的答案。我有两个“级联”的很多型号: 用户有许多要标记的项: class User (models.Model): ... watches_tags = models.ManyToManyField(Tag, related_name='watched_tag_set', blank=True, null=True) ignores_tags = models.ManyToManyField(Tag, related_name

这似乎是一个简单的问题,但在任何地方都没有答案,也没有明显的答案。我有两个“级联”的很多型号:

用户有许多要标记的项:

class User (models.Model):
  ...
  watches_tags = models.ManyToManyField(Tag, related_name='watched_tag_set', blank=True, null=True)
  ignores_tags = models.ManyToManyField(Tag, related_name='ignored_tag_set', blank=True, null=True)  
和标签有许多状态:

class Tag (models.Model):
  tag = models.TextField ()
  status = models.ManyToManyField (Status)
是否有一个ORM表达式可以为我提供所有带有标记的状态,任何给定的用户都会监视/忽略这些标记?我可以在逻辑中迭代标记并连接查询集,但我希望在更复杂的基于Q表达式的查询中使用它,并且我希望将尽可能多的工作推送到数据库引擎。

尝试以下方法:

watched_statuses = Status.objects.filter(tag__watched_tag_set=user)
ignored_statuses = Status.objects.filter(tag__ignored_tag_set=user)
(请注意,标签上的相关名称令人困惑,因为
关注的标签集
是一组
用户
,而不是
标签