.update(...)带有额外的(...)和F(...)
我想做一个sql查询来更新Django站点中的很多模型。 我想改变一个字符列/字段是基于id和一些文本,在MySQL(这是该网站是),我会这样做"UPDATE table SET blah = 'prefix'||id||'suffix'"
。
我在Django做这件事的第一次尝试是:
Model.objects.update(blah='prefix'+F('id')+'suffix')
但是,这试图给MySQL一个+
,而不是||
运营商。
我的下一个尝试是使用.extra(…)
像这样:
Model.objects.extra(select={'newvalue':'"prefix"||id||"suffix"'}).update(blah=F('new_value'))
但F(…)
无法从选择中看到新字段。
无论如何要做到这一点没有分解到原始SQL?
不。 Django的ORM是多分贝的编译器。 它不附带自定义数据库功能,如这个。
如果我理解你的问题,这可能会有所帮助:
blah = '%s %s %s' %(prefix, id, suffix)
Model.object.update(blah=blah)
链接地址: http://www.djcxy.com/p/38705.html