我正在使用带有表格和物化视图的Postgres 9.4后端的Django 1.8。
我有一个名为Invoke-webRequest -Uri "http://mysiteURL" -Credentials $MyCreds -Body "input=1&type=3"
的80GB表,其中包含消费项目,每个项目都有一个组织代码和一个地区代码:
spending
我还有一个class Prescription(models.Model):
region = models.ForeignKey(Region)
organisation = models.ForeignKey(Organisation)
month = models.DateField()
amount = models.FloatField()
的物化视图,从spending_by_region
表生成:
spending
(我正在使用物化视图,因为数据非常大且是静态的,实际上是数据仓库。)
我的一些Django视图使用物化视图,例如我对每个地区的看法。在这些情况下,我使用原始SQL来运行CREATE MATERIALIZED VIEW spending_by_region AS
SELECT region, month, SUM(amount) AS amount
FROM spending
GROUP BY month, region_id
,因为当然Django的ORM不知道物化视图。
现在我想开始为我的应用程序实现API。我听说过关于django-rest-framework的好东西,但是可以在序列化之前使用原始SQL查询来获取数据吗?
例如,如果我想要一个名为select * from spending_by_region where region=123
的API方法,是否可以运行与上面相同的查询?
我找到了this example,但它仍然依赖于Model字段,而不是纯粹的原始SQL。