我有三个模型在我正在制作的网站上显示某种活动。歌曲,投票和评论。它们共享一个共同的列when
,显示创建记录的时间。
我想基于所有三个模型显示活动列表。总之,我希望将它们组合在一起,按when
排序,并删除前10条记录。
如何我这样做是个问题。我知道我可以为每个模型获得10个recods,将它们放在字典中并按日期排序(好吧,一旦我知道如何在Python中按日期排序),但这似乎效率很低。
答案 0 :(得分:3)
这可能就是这样做的。实际上效率不高 - 排序30个项目相当快,Python有一个非常好的内置排序算法。
items = list(Song.objects.order_by('when')[:10])
items.extend(list(Vote.objects.order_by('when')[:10]))
items.extend(list(Comment.objects.order_by('when')[:10]))
items.sort(key=lambda x: x.when)
items = items[:10]
答案 1 :(得分:3)
虽然重新制作模型可能为时已晚,但有一种可能性就是将常用功能引入父类。这样您就可以简单地从父模型中运行查询。