我想通过看起来像这样的ORM运行django更新:
MyModel.objects.filter(**kwargs).update(my_field=F('my_other_field')+'a string')
这导致MySQL引发异常。无论如何,不编写原始SQL就能做到这一点?
发生的事情是Django正在将“ +”传递给SQL-但是SQL不允许将“ +”用于串联,因此它尝试进行数字加法。如果您使用整数代替“字符串”,那么它确实可以将的整数值添加my_other_field到变量中,因此可以正常工作。
my_other_field
这是否是bug尚有争议。查找查询中对象的文档F()说明:
F()
Django支持使用加法,减法,乘法,除法和模运算与F()对象
因此可以说您不应该尝试使用它来更新字符串。但这当然没有记录,并且错误消息“ Invalid DOUBLE value”不大有用。我开一张票。