构造一个 django 查询集,用于对内部连接进行排序
Posted
技术标签:
【中文标题】构造一个 django 查询集,用于对内部连接进行排序【英文标题】:Construct a django queryset that orders an inner join 【发布时间】:2011-07-01 01:44:07 【问题描述】:我正在尝试跟踪基于 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" |
按这个顺序!
在 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;
但是如何使用 django 查询集 API 构建它?
我将非常感谢任何帮助!
【问题讨论】:
【参考方案1】:Page.objects.filter(pageview__user = request.user).order_by('pageview__date')
有关 SQL 连接的进一步参考,请参阅 Documentation
【讨论】:
以上是关于构造一个 django 查询集,用于对内部连接进行排序的主要内容,如果未能解决你的问题,请参考以下文章