Django选择最大ID

pis*_*hio 24 python django

给定一个带有自动设置"id"的标准模型(称为Image),如何获得最大ID?

到目前为止,我已经尝试过:

max_id = Image.objects.all().aggregate(Max('id'))
Run Code Online (Sandbox Code Playgroud)

但我得到'id__max'键错误.

max_id = Image.objects.order_by('id')[0].id
Run Code Online (Sandbox Code Playgroud)

给出一个'参数2到map()必须支持迭代'异常

有帮助吗?

Raz*_*Raz 62

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

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

  • 是的,在这种情况下,之前的答案会引发IndexError. (4认同)
  • 如果没有对象,则会抛出Image.DoesNotExist异常 (2认同)

Dan*_*man 40

只需按反向ID排序,然后排在最前面.

Image.objects.all().order_by("-id")[0]
Run Code Online (Sandbox Code Playgroud)

  • 这不是要评估查询集并执行对象构造吗?`Image.objects.values('id').aggregate(min_id=Min('id'))` 将生成一个包含 min_id 的单键字典。也许这在10年前是不可能的。 (2认同)

pat*_*cia 13

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

prev = Image.objects.last()
Run Code Online (Sandbox Code Playgroud)

这为您提供了最后一个对象.

  • 我认为这是最好的答案.这是最简单的肯定. (2认同)