这是一个简单的问题,我可以通过for循环和大量比较实现这一点,但我想知道是否有更好的方法。
我有两个查询集:
comments = Comment.objects.all()
actions = Action.objects.all()
所以,我需要一个包含按日期排序的评论和操作的列表。 Comment
模型和Action
模型具有日期(date=models.DateTimeField(auto_now_add=True)
)字段。
换句话说:
wall = [] # Alternate Comments and Actions ordered by date
答案 0 :(得分:1)
这是Django ORM擅长的东西!
https://docs.djangoproject.com/en/1.8/topics/db/queries/#retrieving-specific-objects-with-filters
true
然后你可以遍历两个列表,因为它们已经按日期排序,你只需要对每个元素进行一次成对比较,按日期对它们进行排序!
答案 1 :(得分:1)
您可以拥有合并评论和操作的列表
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)