我有两个型号。 Artist
模型和Album
模型。有一个ManyToManyField
连接两者,因为一张专辑可以有多个艺术家(合作等)。
我遇到的问题是当我执行简单的Album.objects.filter(artists=1)
类型查询时,它会显示所有具有该艺术家归因于它的Album
个对象。我想要做的是找到那位艺术家是唯一的艺术家(他们的发行版,没有合作)的所有专辑。
(我不熟悉extra()
条款,但我确信它可能与此解决方案有关,因此非常感谢任何帮助。)
答案 0 :(得分:4)
Album.objects.annotate(n_artists=Count("artists')).filter(n_artists=1).filter(artist=some_awesome_artist)
基本上,我们的想法是找到所有拥有1位艺术家的专辑(通过注释和过滤),然后过滤掉。