Django RelatedManager - 如何将两个查询集相互关联?

时间:2011-04-02 15:09:32

标签: django

Django的新手,所以很可能我做错了。

我有一个Album班级和一个Song班级。 Album可以包含多个Song个。到目前为止这么简单。

在我的专辑列表下方,我想要一个他们的歌曲列表。不是每张专辑都有一首歌(不要问)所以我不想只查询Song模型并将其加入Album

我看过RelatedManager.add(),但这并不符合我的预期:

a = Album.objects.order_by('-release_date')[:5]
s = Song.objects.all()
a.release_set.add(s)

我收到此错误:

'QuerySet' object has no attribute 'release_set'

我这样做了吗?据我所知,我正在选择一些Album,选择所有Song,然后决定将两个集合加在一起,它们有一个共同的album_id

有谁知道更好的方法吗?

谢谢, 马特

1 个答案:

答案 0 :(得分:2)

呃,没有。你的某个地方有一个错误的结局。

add用于将新歌曲项目与其专辑相关联。如果您的歌曲已经有album_id个值,则它们已与相册相关联。您无需执行任何特定的操作即可加入它们。

albums = Album.objects.order_by('-release_date')[:5]
for album in albums:
    print album.song_set.all()
相关问题