在Django 1.2.3中,我需要执行一些纯Django ORM函数不可行的查询。 E.g。
result = MyModel.objects.extra(select={'stddev': 'STDDEV_SAMP(value)'}).values()
但实际上,我需要在几个SQL引擎(sqllite,MySQL和MSSQL)上运行此代码。所以,我应该测试settings.DATABASES['default']['engine']
并运行特定于引擎的代码。
这个问题是否有类似Django的方法? (例如,用户定义的函数放在某处,以便Django根据默认的数据库引擎运行它们。)
谢谢
答案 0 :(得分:1)
存储用于访问数据的代码的适当位置在模型层中的方法中。这样,模型可以:
这些可以交换,优化和调整,而您的应用程序的其余部分不必更改,因为应用程序的其余部分仅通过您的模型处理数据。