Ваш вопрос сводится к получению объекта StData
(или значений) для записи с наибольшим столбцом time
.Таким образом, нам не нужен агрегат, но мы получаем наименьшую или наибольшую строку по столбцу time
.
Получение объекта StData
с максимальным значением time
. Вы можетепросто получите строку last()
при заказе на 'time'
, например:
stdata_max_time = qs<b>.order_by('time').last()</b> # will return a StData
или, альтернативно:
stdata_max_time = qs<b>.order_by('-time').first()</b> # will return a StData
В случае, если time
НЕДЕЙСТВИТЕЛЕН (не здесь),вы можете убедиться, что вы не получите строку с NULL
, указав, что при заказе они должны быть размещены как первый / последний элементы соответственно:
from django.db.models import F
# two alternatives
stdata_max_time = qs.order_by(<b>F('time', nulls_first=True)</b>).last()
stdata_max_time = qs.order_by(<b>F('-time', nulls_last=True)</b>).first()
Таким образом, это объект StData
, и выТаким образом, можно получить всю необходимую информацию из этого объекта.Поскольку это StData
объект, он также будет вести себя так (поэтому дополнительные свойства, методы и т. Д., Которые вы определили, также будут работать).
Получение значений с максимальным значением time
Это полностью аналогично, за исключением того, что мы добавили в запрос .values(..)
:
stdata_max_time = qs.order_by('time')<b>.values('exp_no', 'time', 'price')</b>.last()
Но если нет действительно веских причин, я лично предпочел бы получить StData
объект, поскольку это означает « батареи включены » (вы получаете всю логику, которую вы написали в классе StData
для этого объекта).