Django ORM Подзапросы - PullRequest
       0

Django ORM Подзапросы

0 голосов
/ 09 апреля 2020

Я пытаюсь выяснить, как выполнить следующий SQL запрос с Django ORM:

SELECT main.A, main.B, main.C
FROM
  (SELECT main.A, MAX(main.B)
  FROM main
  GROUP BY main.A) subq
WHERE main.A = subq.A
AND main.B = subq.B

Последние две строки необходимы, поскольку они восстанавливают значение столбца C когда B находится в максимуме в группе. Без них у меня был бы A и соответствующий Max B, но не значение C, когда B на максимуме. Я много искал, но не могу найти пример, который может построить этот запрос, используя Django ORM. В большинстве примеров используется класс Subquery Django, и показано, как сопоставить подзапрос с одним столбцом (как и в случае main.A = subq.A). Но как мне сопоставить 2+ столбца?

Редактировать: Вот класс модели:

class Tweets(models.Model):
    tweet_id = models.AutoField(primary_key=True)
    tweet_date = models.DateTimeField(blank=True)
    candidate = models.CharField(max_length=100)
    district = models.IntegerField(blank=True)
    username = models.CharField(max_length=256)
    likes = models.IntegerField(blank=True)
    tweet_text = models.CharField(max_length=560)

Я бы хотел сгруппировать по «кандидатам» и «районам», а затем найти чирикать с наибольшим количеством лайков. Но я также хотел бы знать «username» и «tweet_text», связанные с тем твитом, у которого больше всего лайков.

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