Создайте набор запросов django, который заказывает внутреннее соединение - PullRequest
2 голосов
/ 21 февраля 2011

Я пытаюсь отследить просмотры страниц на сайте, основанном на Django.У меня есть следующая модель

class PageView:
   date = DateTimeField( auto_now=True )
   user = ForeignKey( User )
   page = ForeignKey( Page )

для отслеживания каждого просмотра страницы.Я хочу создать набор запросов, который возвращает недавно просмотренные страницы пользователя, упорядоченные по дате просмотра каждой страницы.Например, если у меня есть следующие просмотры страницы:

date        | user_id | page_id | 
2011-02-20  |       5 |       2 |
2011-02-19  |       5 |       1 |
2011-02-24  |       5 |       1 |
2011-02-23  |       5 |       2 |

Я хочу, чтобы набор запросов возвратил

date        | page_id |  title    | and everything associated with the page
2011-02-24  |       1 |  "page 1" |
2011-02-23  |       2 |  "page 2" |

IN THAT ORDER!

В SQL яможно сделать это с помощью

SELECT p.*, v.date FROM page p, 
(SELECT page_id, MAX(date) date FROM pageview 
WHERE user_id=5 GROUP BY page_id) AS v where p.id=v.page_id 
ORDER BY v.date;

Но как я могу сконструировать его с помощью API набора запросов django?

Буду очень признателен за любую помощь!

1 Ответ

3 голосов
/ 22 февраля 2011
Page.objects.filter(pageview__user = request.user).order_by('pageview__date')

Для получения дополнительной информации о соединениях SQL см. Документация

...