Django-MySQL无法识别queryset中的model.column吗?

时间:2017-06-12 13:42:11

标签: mysql django django-queryset

我分别在本地和开发机器上安装了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

1 个答案:

答案 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