如何使用extra()可移植的数据库后端进行Django查询?

时间:2011-05-04 08:58:09

标签: django sqlite postgresql

我有一个小项目,涉及按出版年份浏览文章档案。

我使用了other question中给出的技巧来建立这些年份的文章发布年份和文章计数列表。它在我的SQLite测试服务器上工作得很好。由于生产服务器将依赖于PostgreSQL,我正在寻找一种在PostgreSQL中实现相同功能的方法,并最终使用EXTRACT关键字。我使用“导入设置”之类的东西来检测当前的数据库后端并执行正确的查询。

我的观点是,所有这些看起来越来越像一个肮脏的&糟糕的黑客以非常不优雅,不稳定和难以维护的方式解决问题。作为一名网络程序员初学者,我问我经验丰富的老人,

你会如何正确处理?

1 个答案:

答案 0 :(得分:1)

作为原始sql的选项:

您可以使用ORM计算每年的计数(例如How to use Django ORM to get a list by year of all articles with an article count

然后将该值存储在某个位置(在模型中或缓存中......),以免被ORM计算的缓慢所淹没。