【问题标题】:python list max - returning every time different resultpython list max - 每次返回不同的结果
【发布时间】:2014-04-27 09:57:14
【问题描述】:

我有这样的疑问:

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 的另一个对象。我的愿望是在这 2 个模型中获得最新的对象。

我试过了:

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

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

【问题讨论】:

  • 重复分配给obj1是故意的吗?
  • @kviiri 哦,对不起,我的错字

标签: python django list


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-29
    • 1970-01-01
    • 2020-09-11
    • 2020-01-28
    • 1970-01-01
    • 2012-05-28
    相关资源
    最近更新 更多