我正在尝试更新和修改Django ORM中的字符串字段。相应的SQL操作如下:
UPDATE example_table SET string_field = REPLACE(string_field, 'old text', 'new text');
使用该查询语句,我期望将“string_field”列中所有条目的“old text”和“old text more text”分别替换为“new text”和“new text more text”。Bulk update() 看起来很有前途,但不允许我仅修改字段的一部分,F()表达式 只实现数字更改,而不是字符串替换。 我还尝试使用原始查询来运行上述SQL,但那似乎是一个侧面的黑客方法(特别是由于F()存在以执行相同的数字功能),并且我无法使它们实际执行。最终我得到了这个解决方案,但当我知道可以用一行SQL语句完成时,执行所有额外的查询似乎有点可惜。for entry in ExampleModel.objects.all():
entry.string_field = entry.string_field.replace('old text', 'new text', 1)
entry.save()
这个功能在Django的ORM中还不存在吗?我在文档中有没有漏看什么?
相关的Stack Overflow问题: