перевести SQL-запрос в модель Django - PullRequest
0 голосов
/ 13 июня 2019

У меня есть SQL-запрос:

   Select * From Order a Where date = (Select Max(b.date) From Order b Where a.company = b.company)

Как перевести его на Django с помощью ORM Django?

Модель:

class Order(models.Model):
    id            = models.UUIDField(primary_key=True, default=uuid.uuid4)
    company       = models.ForeignKey('company', on_delete =models.CASCADE, null=False)
    text          = models.TextField(null=True, blank=True)                      
    date          = models.DateTimeField(null=True)

Ответы [ 2 ]

0 голосов
/ 13 июня 2019

Вы хотите получить у каждой компании Order объект с максимальной датой? Вы можете попробовать

Order.objects.all().order_by('-date').distinct('company')

Это должно упорядочить по дате набора запросов по убыванию и вернуть первые отдельные компании

0 голосов
/ 13 июня 2019

Один из способов сделать это - выполнить запрос, используя raw:

order.objects.raw("Select * From Order a Where date = (Select Max(b.date) From Order b Where a.company = b.company)")

пожалуйста, проверьте эти документы ниже: https://docs.djangoproject.com/en/2.2/topics/db/sql/#mapping-query-fields-to-model-fields

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