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
。
有谁知道更好的方法吗?
谢谢, 马特
答案 0 :(得分:2)
呃,没有。你的某个地方有一个错误的结局。
add
用于将新歌曲项目与其专辑相关联。如果您的歌曲已经有album_id
个值,则它们已与相册相关联。您无需执行任何特定的操作即可加入它们。
albums = Album.objects.order_by('-release_date')[:5]
for album in albums:
print album.song_set.all()