2

我想做一个 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 的情况下做到这一点?

4

2 回答 2

1

没有。Django 的 ORM 是多数据库编译器。它没有附带自定义数据库功能,例如这个。

于 2012-11-27T10:09:05.233 回答
0

如果我正确理解您的问题,这可能会有所帮助:

blah = '%s %s %s' %(prefix, id, suffix)

Model.object.update(blah=blah)
于 2012-11-27T11:49:52.930 回答