我使用 Django 1.8 和带有表和物化视图的 Postgres 9.4 后端。
我有一个 80GB 的表,名为spending
包含支出项目,每个项目都有一个组织代码和一个区域代码:
class Prescription(models.Model):
region = models.ForeignKey(Region)
organisation = models.ForeignKey(Organisation)
month = models.DateField()
amount = models.FloatField()
我也有一个物化视图spending_by_region
,从生成spending
table:
CREATE MATERIALIZED VIEW spending_by_region AS
SELECT region, month, SUM(amount) AS amount
FROM spending
GROUP BY month, region_id
(我使用物化视图是因为数据非常大并且是静态的,实际上是一个数据仓库。)
我的一些 Django 视图使用物化视图,例如我对每个地区的看法。在这些情况下,我使用原始 SQL 来运行select * from spending_by_region where region=123
,当然,因为 Django 的 ORM 不知道物化视图。
现在我想开始为我的应用程序实现一个 API。我听说过有关 django-rest-framework 的好消息,但是是否可以在序列化之前使用原始 SQL 查询来获取数据?
例如,如果我想要一个名为/spending_by_region/123
,是否可以运行与上面相同的查询?
I found 这个例子 https://stackoverflow.com/a/26016364/194000,但它仍然与 Model 字段相关,而不是纯粹的原始 SQL。