Django выбрать максимальный идентификатор - PullRequest
23 голосов
/ 21 мая 2010

для стандартной модели (называемой Image) с автоматически установленным 'id', как мне получить максимальный идентификатор?

Пока я пробовал:

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

но я получаю сообщение об ошибке «id__max».

Попытка

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

дает 'аргумент 2 для map (), который должен поддерживать итерацию' исключение

Любая помощь?

Ответы [ 6 ]

59 голосов
/ 26 февраля 2013

В текущей версии django (1.4) это еще более читабельно

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

39 голосов
/ 21 мая 2010

Просто закажите обратный идентификатор и возьмите верхний.

Image.objects.all().order_by("-id")[0]
12 голосов
/ 28 сентября 2016

Я знаю, что уже есть правильный ответ, но здесь есть еще один способ сделать это:

prev = Image.objects.last()

Это дает вам последний объект.

2 голосов
/ 23 декабря 2015

Ваша логика верна, это вернет максимальный идентификатор

res = Image.objects.filter().aggregate(max_id=Max('pk'))
res.get('max_id')
0 голосов
/ 09 февраля 2019

это также отлично работает:

max_id = Image.objects.values('id').order_by('-id').first()
0 голосов
/ 05 октября 2018

Последний объект без перехвата исключения и использования django orm:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...