@Rogerg

Как составить SQL запрос с join на ORM Django?

У меня есть такие модели в models.py
Class A(models.Model):
    name = models.CharFeld(max_lenght=100)

Class B(models.Model):
    ...
   customer = models.ForeignKey('A', models.CASCADE)

Class C(models.Model):
    equipment_brand=models.CharFiled(max_lenght=20)
   ...
   branch = models.ForeignKey('B', on_delete=models.CASCADE


И есть такой SQL запрос (приложение называется myapp и таблицы в бд будут выглядеть так myapp_a, myapp_b, myapp_c)
select name,equipment_brand, count(1) from myapp_a
join myapp_b on myapp_a.id=myapp_b.customer_id
join myapp_c on myapp_b.id=myapp_c.branch_id
group by name, equipment_brand
order by name, count desc ;


Т.е это запрос возвращает количество устройств каждого бренда у определенного заказчика.
Как переписать этот запрос в виде Django ORM?
Думал как-то через select_related например
q=C.objects.select_related("branch__customer").values("equipment_brand").annotate(quantity=Count("equipment_brand)
но получается количество устройств каждого бренда всего, без учета заказчика.
Надеюсь ничего не упустил при составлении вопроса,
  • Вопрос задан
  • 218 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы