代码之家  ›  专栏  ›  技术社区  ›  pistacchio

Django选择最大ID

  •  21
  • pistacchio  · 技术社区  · 15 年前

    给定一个具有自动设置“id”的标准模型(称为image),如何获取max id?

    到目前为止,我试过:

    max_id = Image.objects.all().aggregate(Max('id'))
    

    但我得到一个“id_uumax”键错误。

    尝试

    max_id = Image.objects.order_by('id')[0].id
    

    给出“参数2 to map()必须支持迭代”异常

    有什么帮助吗?

    6 回复  |  直到 6 年前
        1
  •  36
  •   Daniel Roseman    15 年前

    只需按逆向ID排序,然后取最上面的一个。

    Image.objects.all().order_by("-id")[0]
    
        2
  •  57
  •   Raz    12 年前

    在Django(1.4)的当前版本中,它的可读性更高

    Image.objects.latest('id').id

        3
  •  11
  •   patricia    9 年前

    我知道这已经有了一个正确的答案,但这是另一种方法:

    prev = Image.objects.last()
    

    这将给出最后一个对象。

        4
  •  2
  •   Mario César    9 年前

    你的逻辑是正确的,这将返回最大ID

    res = Image.objects.filter().aggregate(max_id=Max('pk'))
    res.get('max_id')
    
        5
  •  0
  •   GIN TOKI    6 年前

    这也非常有效:

    max_id = Image.objects.values('id').order_by('-id').first()
    
        6
  •  -1
  •   Krzysztof Dziuba    7 年前

    未捕获异常并使用django orm的最新对象:

    Image.objects.filter().order_by('id').first()