группировка django по другому полю

#sql #django #group-by

#sql #django #группировка по

Вопрос:

Эй, я хочу сделать запрос, который выдаст мне то же самое, что и this в SQL:

 select testresult.*,max(timeEnd) 
from testresult 
group by testresult.idTest
  

idTest не является PK в testresult.
это FK в test

необходимо максимальное testresult для любого теста, скажем

 s=query()
s[0].id       ;is that TestResult
  

Комментарии:

1. Вам нужна строка с максимальным значением timeEnd ?

2. @DrTyrsa группируется по тестам, да

3. @shevski Вы получите это с запросом в моем ответе.

4. @DrTyrsa Я пробовал это, и значения восстанавливаются dict из {idTest,maxtimeend} , и я не могу ссылаться на testresult из него

5. @shevski testresult — это имя таблицы в вашем запросе, как вы хотите на него ссылаться?

Ответ №1:

Вы можете группировать по любому полю, а не только по первичному ключу.

 TestResult.objects.values('idTest').annotate(max_time_end=Max('timeEnd')).order_by()
  

Комментарии:

1. как мне впоследствии получить PK от TestResult?

2. этот запрос даст мне dict ключи для тестов и их максимальное timeEnd

3. @shevski И чего ты хочешь?

4. Max находится в django.db.models , на всякий случай, если кто-нибудь столкнется с этим и не знает. @DrTyrsa: для полноты картины вы должны указать какой-либо требуемый импорт; новичку не всегда легко найти эту информацию.