.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

上一篇: .update(…) with an extra(…) and F(…)

下一篇: Django ORM "get" translation to SQL