Django ORM присоединяется к себе после агрегации - PullRequest
2 голосов
/ 05 мая 2020

Я пытаюсь написать запрос ORM для соединения таблицы с самим собой после агрегирования (следовательно, select_related et c не будет работать). Соответствующий запрос SQL выглядит следующим образом:

select * from 
transaction t 
join
(
   select account_id, sum(amount) as total_amount 
   from transaction 
   where amount > 0 
   group by account_id
) aggr
on t.account_id = aggr.account_id
where amount > 0.4 * total_amount;

Пока не повезло. Я даже пробовал join_to/CustomJoin из Django ORM. Присоединение к подзапросу , но это не сработало.

Изменить. Модели указаны ниже

class Account(models.Model):
    currency = models.CharField(max_length=30)
    ...

class Transaction(models.Model):
    account = models.ForeignKey(Account, db_constraint=False)
    amount = models.DecimalField(max_digits=10, decimal_places=2)
    booking_date = models.DateTimeField(db_index=True)
    ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...