Django MySQL无法识别queryset extra中的model.column?
我在本地和开发机器上分别安装了SQLite和MySQL。以下内容在我的本地机器(使用SQLite)上运行良好: 但是由于strftime不能与MySQL()一起使用,我尝试使用给定链接中建议的Django MySQL无法识别queryset extra中的model.column?,mysql,django,django-queryset,Mysql,Django,Django Queryset,我在本地和开发机器上分别安装了SQLite和MySQL。以下内容在我的本地机器(使用SQLite)上运行良好: 但是由于strftime不能与MySQL()一起使用,我尝试使用给定链接中建议的DATE\u FORMAT(),以及其他地方。 但现在当我执行以下命令时: select_single = {'date': "DATE_FORMAT(projectName_Modelname.created, '%%Y-%%m-%%d')"} queryset.extra(select=select_s
DATE\u 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”是应用程序“projectName”的Django模型“Modelname”中的日期时间字段
用NOW()替换projectName\u Modelname.created
时进行调试。
不会出现错误。我也尝试过只使用Modelname.created
而不是projectName\u Modelname.created
,但没有任何好处
注意:我使用的是Django1.5.5,我认为应该是这样的:
date\u raw\u query={'date':“date\u格式(已创建,%%Y-%%m-%%d')”}
然后试试看
queryset.extra(select=date\u raw\u query)
希望这在您的设置中起作用。我已经在Django 1.7和MySQL上尝试过了,并且似乎很有效
还请记住,如果开始出现SQL错误,您始终可以执行打印queryset.extra(select=date\u raw\u query)。查询以查看可能出现的错误
在编写SQLite和MySQL之间的兼容代码时,有人建议编写自定义MySQL函数
但我建议不是这样。最好在本地有一个类似的开发环境,安装MySQL,并尽快升级Django:PDjango 1.5.5已经过时多年了。几乎没有人记得如何使用额外的“现在”和“最后”,但并非最不重要的是,始终尝试在本地和生产中使用相同的RDBMS来避免此类问题。您能解释一下为什么要这样做吗?用Python或模板格式化输出日期要简单得多。@e4c5这是关于我正在维护的一个项目,有人请求做一些修改。@DanielRoseman如果我无法修改,我将最终重构我得到的整个部分DatabaseError:(1052,“字段列表中的“created”列不明确”)
尝试您的建议。虽然分析了MySQL查询,但我发现modelname改为所有小写,但projectname是camelcase(像projectname\u modelname一样)。因此,我将其改为projectname\u modelname.created
,效果很好!谢谢。
DatabaseError: (1054, "Unknown column 'projectName_Modelname.created' in 'field list'")