关于sqlite:如何使用Extra()可移植的跨数据库后端进行Django查询?

How to make Django query using extra() portable accross database backends?

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

我用另一个问题中给出的技巧来建立文章发表年份和这些年份的文章计数列表。它在使用SQLite的测试服务器上运行良好。由于生产服务器将依赖PostgreSQL,因此我正在寻找一种方法来在PostgreSQL中实现相同的目的,并最终使用EXTRACT关键字进行了开发。我使用诸如"导入设置"之类的方法来检测当前数据库后端并执行正确的查询。

我的意思是,所有这些看起来越来越像肮脏的东西


作为原始sql的选项:

您可以使用ORM来计算每年的计数(例如,如何使用Django ORM来获取所有具有文章计数的文章的年份列表)

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