【问题标题】:Many-to-Many Relationships: Querying for Objects with a Single Value多对多关系:查询具有单个值的对象
【发布时间】:2011-06-06 23:54:29
【问题描述】:

我有两个模型。 Artist 模型和 Album 模型。有一个ManyToManyField 将两者联系起来,因为一张专辑可以有多个艺术家(合作等)。

我遇到的问题是,当我执行一个简单的Album.objects.filter(artists=1)-type 查询时,它预期会显示该艺术家归因于它的所有Album 对象。我想做的是找到该艺术家是唯一艺术家的所有专辑(他们的发行,没有合作)。

(我不熟悉 extra() 子句,但我确信它可能与解决此问题的方法有关,因此非常感谢您提供任何帮助。)

【问题讨论】:

    标签: python django django-queryset django-orm


    【解决方案1】:
    Album.objects.annotate(n_artists=Count("artists')).filter(n_artists=1).filter(artist=some_awesome_artist)
    

    基本上这个想法是找到恰好有 1 位艺术家的所有专辑(通过注释和过滤),然后向下过滤。

    【讨论】:

      猜你喜欢
      • 2016-02-24
      • 1970-01-01
      • 2021-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多