按不同字段对不同模型对象的列表进行排序

时间:2014-07-18 14:02:47

标签: python django

对于可能包含两种不同类型的Django模型对象的列表,在不同字段上排序的最Pythonic方法是什么?这是一个例子:

模特:

class A(models.Model):
        creation_time = models.DateTimeField()
class B(models.Model):
        last_updated = models.DateTimeField()

观点:

a = A.objects.all().order_by('creation_time')
b = B.objects.all().order_by('last_updated')
c = list(chain(a, b))
# Now I want to organize the contents of c by date pertaining to each object.

如何使用每个对象上的不同键进行排序?

1 个答案:

答案 0 :(得分:3)

使用

对列表c进行排序
c.sort(key=lambda x: getattr(x, 'creation_time', None) or getattr(x, 'creation_date', None))