【发布时间】:2015-03-18 15:16:54
【问题描述】:
我需要能够检索相关记录的总和以进行显示,并且还需要按三个相关模型的计数总和进行排序。目前,我正在通过使用“额外”子句来解决这个问题:
results = Poll.visible.extra(
select={
'f_count':
"""
SELECT COUNT('id') FROM polls_forecast
WHERE polls_forecast.poll_id = polls_poll.id
""",
'total':
"""
(SELECT COUNT('id') FROM polls_forecast
WHERE polls_forecast.poll_id = polls_poll.id) +
(SELECT COUNT('id') FROM polls_pollcomment
WHERE polls_pollcomment.poll_id = polls_poll.id) +
(SELECT COUNT('id') FROM polls_favoritedpoll
WHERE polls_favoritedpoll.poll_id = polls_poll.id)
"""
}
).order_by('-total')[:100]
是否可以给f_count 加上别名,这样我就不必在total 选择语句中做同样的计数?在 total 选择中引用 f_count 会引发“列不存在”错误。
我正在使用 Postgres 9.4、Django 1.7.5、Python 3.4。
【问题讨论】:
标签: django postgresql python-3.x