Skip to main content
 首页 » 编程设计

python之Django ORM之.update(…) 带有 extra(…) 和 F(…)

2025年05月04日20wayfarer

我想执行一个 sql 查询来更新 Django 站点中的许多模型。我想根据 id 和一些文本更改一个 char 列/字段,在 MySQL(这个站点是)中,我会用 "UPDATE table SET blah = 'prefix'||id| 来做到这一点|‘后缀’”。

我在 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 是多数据库兼容的。它不附带自定义数据库功能,例如这个。