Как я могу получить blog_post.title с последним комментарием, создавая пользовательский SQL-запрос? - PullRequest
1 голос
/ 05 февраля 2012

Запрос sql:

select id,title 
from blog_post inner join (select object_pk, max(submit_date) 
                           from django_comments 
                           group by object_pk 
                           order by submit_date DESC) as foo 
where foo.object_pk=blog_post.id;

Как получить тот же результат, используя функцию django model.objects.get? Как я могу написать собственный запрос с Django для этого? Есть ли что-нибудь вроде

model.objects.getwithsqlquery('''select id,title 
from blog_post inner join (select object_pk, max(submit_date) 
                           from django_comments 
                           group by object_pk 
                           order by submit_date DESC) as foo 
where foo.object_pk=blog_post.id;''')

Таблицы mysql:

mysql> describe blog_post;
+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| id       | int(11)      | NO   | PRI | NULL    | auto_increment |
| user_id  | int(11)      | NO   | MUL | NULL    |                |
| title    | varchar(100) | NO   |     | NULL    |                |
| content  | longtext     | NO   |     | NULL    |                |
| created  | date         | NO   |     | NULL    |                |
| modified | date         | NO   |     | NULL    |                |
+----------+--------------+------+-----+---------+----------------+
6 rows in set (0.00 sec)

mysql> describe django_comments;
+-----------------+--------------+------+-----+---------+----------------+
| Field           | Type         | Null | Key | Default | Extra          |
+-----------------+--------------+------+-----+---------+----------------+
| id              | int(11)      | NO   | PRI | NULL    | auto_increment |
| content_type_id | int(11)      | NO   | MUL | NULL    |                |
| object_pk       | longtext     | NO   |     | NULL    |                |
| site_id         | int(11)      | NO   | MUL | NULL    |                |
| user_id         | int(11)      | YES  | MUL | NULL    |                |
| user_name       | varchar(50)  | NO   |     | NULL    |                |
| user_email      | varchar(75)  | NO   |     | NULL    |                |
| user_url        | varchar(200) | NO   |     | NULL    |                |
| comment         | longtext     | NO   |     | NULL    |                |
| submit_date     | datetime     | NO   |     | NULL    |                |
| ip_address      | char(15)     | YES  |     | NULL    |                |
| is_public       | tinyint(1)   | NO   |     | NULL    |                |
| is_removed      | tinyint(1)   | NO   |     | NULL    |                |
+-----------------+--------------+------+-----+---------+----------------+
13 rows in set (0.00 sec)

1 Ответ

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