Python 按日期订购2个不同的查询集

Python 按日期订购2个不同的查询集,python,django,django-queryset,Python,Django,Django Queryset,这是一个简单的问题,我可以通过for循环和大量比较来实现,但我想知道是否有更好的方法 我有两个查询集: comments = Comment.objects.all() actions = Action.objects.all() 所以,我需要一个按日期排序的评论和操作列表。Comment模型和Action模型有一个日期(date=models.datetime字段(auto\u now\u add=True))字段 换言之: wall = [] # Alternate Comment

这是一个简单的问题,我可以通过for循环和大量比较来实现,但我想知道是否有更好的方法

我有两个查询集:

  comments = Comment.objects.all()
  actions = Action.objects.all()
所以,我需要一个按日期排序的评论和操作列表。
Comment
模型和
Action
模型有一个日期(
date=models.datetime字段(auto\u now\u add=True)
)字段

换言之:

wall = [] # Alternate Comments and Actions ordered by date

这是Django ORM非常擅长的事情


然后您可以循环浏览这两个列表,因为它们已经按日期排序,所以您只需要对每个元素进行一次成对比较,就可以按日期对它们进行排序

您可以拥有组合注释和操作的列表

comments = Comment.objects.all()
actions = Action.objects.all()
from itertools import chain
wall = list(chain(comments, actions))
然后可以按属性对python对象列表进行排序,在本例中,属性是日期

wall.sort(key=lambda x: x.date)
您还可以在lambda函数中传递反向True/False,用于降序和升序

wall.sort(key=lambda X:x.date, reverse=True)
wall.sort(key=lambda X:x.date, reverse=True)