我有一个应用程序,该应用程序要构建2-3种组合活动类型的“最近活动” / firehose提要,例如帖子,评论和帖子的赞,以及其他一些内容,也许以后再作。我假设这是通过以下查询完成的:将适当对象的最后一个添加到数据库中,并将其与其他类型的对象的最后一个合并,并按其时间戳对新组合的对象列表进行排序。做这样的事情的最好方法是什么?现在,每次有人刷新页面时,我都会有类似的内容:

NewPost.objects.all().order_by('-postdate')[0:10] #takes the last 16 recently added posts
Comment.objects.all().order_by('-commentdate')[0:10] #takes equal number of comments site wide ordered by timestamp


那么,采用这两个查询集并在其时间戳按顺序排列的1个列表中呈现不同模型的最佳方法是什么?我假设添加其他类型的对象的逻辑类型相同,所以我只想知道仅用2种方法即可。谢谢!

最佳答案

我真的不喜欢您的方法,因为当您要将另一个对象放置在firehose上时,需要在所有需要显示该firehose的地方添加第三行(AnotherObject.objects.all ...等)!

对我而言,执行此操作的最佳方法是使用以下字段创建Firehose模型:dateaction(添加/删除/更新等)和object(对象的通用外键更改)。现在,每当您要更改要添加到firehose的对象时,都将使用正确的字段值添加FirehoseClass的新实例。最后,每当您要显示firehose时,您将只显示所有firehose对象。

关于python - 建筑物simlpe django firehose,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31376328/

10-09 07:50