Агрегация Джанго - Попытка вернуть два значения - PullRequest
0 голосов
/ 22 июня 2019

Я пытаюсь получить имя пользователя и текст их последнего сообщения с помощью функции агрегирования.

Я пытаюсь описать приведенный ниже код, но я не получаю отдельных значений для имени пользователя.

conversations = Chat.objects.values('user__username','body').annotate(Max('dateofpost'))

С учетом вышеизложенного он дает мне все сообщения этого пользователя, но я пытаюсь получить имя пользователя с текстом сообщения, которое является последним опубликованным.Кто-нибудь может помочь?

Я читаю онлайн, но не могу найти объяснения, что делать в этой ситуации.Я вижу сообщения о повторном вызове метода агрегата / значений, но не могу заставить это работать.

1 Ответ

0 голосов
/ 22 июня 2019

Я могу заставить его работать так:

conversations_qs = Chat.objects.values('user__username').annotate(Max('dateofpost'))
conversation_dates = [conv['dateofpost__max'] for conv in conversations_qs]
conversations = Chat.objects.filter(dateofpost__in=conversation_dates)

Есть ли лучший способ сделать это?

...