首页 > 解决方案 > 如何过滤Django中相关对象的相关对象?

问题描述

想象一个数据模型,其中:

class Album(models):
    name = models.CharField

class Song(models):
    albums = models.ManyToManyField(related_name="albums")

class Word(models):
    songs= models.ManyToManyField(related_name="songs")
    category = model.Charfield() # can be "friendly", "expletive", etc.

即一张专辑有很多歌曲,而一首歌可以出现在几张专辑中。那么一首歌由很多词组成,同一个词可以出现在多首歌曲中。

我想构建一个查询集,其中包含类别为“友好”的所有单词,并且属于专辑的所有歌曲。

标签: pythondjangodjango-modelsdjango-queryset

解决方案


尝试这个:

Word.objects.filter(category='friendly', songs__albums__name__contains='freedom')

您可能需要编写自己的模型管理器(查看文档:https ://docs.djangoproject.com/en/3.2/topics/db/managers/ )。


推荐阅读