我分别在本地和开发机器上安装了SQLite和MySQL。以下在我的本地机器上运行正常(使用SQLite):
select_single = {'date': "strftime('%%Y-%%m-%%d',projectName_Modelname.created)"}
queryset.extra(select=select_single)
但是由于strftime
不适用于MySQL(link),我尝试使用DATE_FORMAT()
按照给定链接和其他地方的建议。
虽然现在我在下面执行:
select_single = {'date': "DATE_FORMAT(projectName_Modelname.created, '%%Y-%%m-%%d')"}
queryset.extra(select=select_single)
出现以下错误:
DatabaseError: (1054, "Unknown column 'projectName_Modelname.created' in 'field list'")
其中'created'是app'projectName'的Django模型'Modelname'中的Datetime字段
当我用projectName_Modelname.created
替换NOW()
时调试没有错误。我还尝试了Modelname.created
而不是projectName_Modelname.created
但没有任何好处?
注意:我使用的是Django1.5.5
答案 0 :(得分:1)
我认为应该是这样的:
date_raw_query = {'date': "date_format(created, '%%Y-%%m-%%d')"}
然后尝试
queryset.extra(select=date_raw_query)
希望在您的设置中有效。我在Django 1.7和MySQL上试过这个并且似乎正在工作。
还要记住,如果SQL错误开始出现,您可以随时执行print queryset.extra(select=date_raw_query).query
以查看可能出现的问题。
当谈到在SQLite和MySQL之间编写兼容代码时,建议编写自定义MySQL函数here
但我建议不然。最好在本地使用MySQL设置类似的开发环境,并尽快升级Django。 :P