python list max - 每次返回不同的结果

时间:2014-04-27 09:57:14

标签: python django list

我有这样的疑问:

res = []
obj1= MyModel1.objects.order_by('-id')[:1]
obj2= MyModel2.objects.order_by('-id')[:1]
res.extend(x for x in (obj1, obj2))
max_res = max(res) 

但它每次都给我不同的结果 - 意思是,一次来自MyModel1的一个对象,另一次来自MyModel2的另一个对象。我的愿望是获得这两个模型的最新对象。

我尝试过:

max_res = max(res, key=lambda r: r.id)

但是它说:'QuerySet' object has no attribute 'id'

1 个答案:

答案 0 :(得分:2)

由于ordered_by返回一个查询集,您需要在此查询集中获取对象。我知道你正在切片,但你的切片也会返回一个查询集,而不是一个对象。

如果你想找到最新的对象,在你的情况下它意味着id最高的那个,你需要以下查询:

obj1 = MyModel1.objects.latest('id')
obj2 = MyModel1.objects.latest('id')

max([obj1,obj2], key=lambda x: x.id)