У меня есть модель, полная эффективных дат.Известные поля для этих ставок: name
, type
, effective_date
и rate
.
. Мне нужно иметь возможность фильтровать частоты модификаторов, чтобы получать только ставки определенного типа и раньше.определенная дата.
ModifierRate.objects.filter(
type=settings.MODIFIER_RATE_TYPES_TAX,
effective_date__lte=date)
Этот запрос может возвращать ставки с одинаковыми name
и type
, поэтому мне нужно, чтобы они различались в этих двух полях.
.distinct('name', 'type')`
Однако, если есть повторяющееся имя и тип, мне нужно самое последнее.
.order_by('-effective_date')
После всего, что мне нужно агрегировать Сумма ставок по этим объектам.
.aggregate(rate__sum=Coalesce(Sum('rate'), 0))['rate_sum']
Если япопробуйте и разбить все это вместе, я получаю
raise NotImplementedError("aggregate() + distinct(fields) not implemented.")
NotImplementedError: aggregate() + distinct(fields) not implemented.
Я гуглил некоторое время и есть много похожих вопросов, которые используют values_list
и annotate
, но я не думаю, что это то, чтоЯ хочу.
Как получить сумму ставок до определенной даты, которые различаются по имени и типу полей, где используется самая последняя отдельная ставка?
Спасибо.