Найти - Пользователи
Полная версия: Выборка объектов в Django
Начало » Django » Выборка объектов в Django
1
Jenyay
Привет!

Есть модель в Django, описывающая историю изменения некой величины для каждого пользователя со временем.

class UserValueHistory (models.Model):
    user = models.ForeignKey (...)
    value = models.FloatField (...)
    date = models.DateTimeField (...)

Задача состоит в том, чтобы получить выборку, содержащую пользователей и value, соответствующее максимальной date для каждого пользователя, с помощью инструментов Django без использования ручного написания SQL.
SirJorah
Так пробовали?
sel_set = []
for user in Users:
    one_obj = {}
    uv = UserValueHistory.objects.filter(user=user).order_by("-date")[0]
    one_obj["user"] = user
    one_obj["value"] = uv.value
    sel_set.append(one_obj)
По идее, должно прокатить
Jenyay
Да, по идее так должно работать, но тут придется делать столько же запросов к базе, сколько пользователей. Вот думаю, может можно обойтись одним-двумя запросами.
FishHook
А разве задача не решается простым агрегированием по Max(date)?
Jenyay
В том то и дело, что мне нужно получить не просто Max(date), а значения value, которые соответствуют каждой из Max(date).
SirJorah
Сам думал о том, что мой вариант грешит большим количеством запросов. Но как-то по другому - только SQL в голову приходит. Специально перечитал пару глав из Головатого, но таких случаев там не рассматривают. Может, кто из мега-опытных (не ирония) коллег предложит решение? Тоже интересно.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB