使用与功能update()django相同的字段来更新模型中的字段

时间:2019-10-10 23:36:46

标签: django django-rest-framework

我有很多记录要更新一个字段,我必须使用Django的ORM附带的.update()函数来完成此操作。我需要更新此字段,将字符串与相同字段的值连接起来。

我尝试使用带F表达式和Value的注释。但这没有用,因为在字段的注释中,我似乎无法使用同一字段。

这是我试图做的:

Model.objects.all().annotate(image=Concat(Value("Path/"), F("image")))

我有下一个型号:

+------+-------+
| id   | image |
+------+-------+
|    1 | image1|
|    2 | image2|
|    3 | image3|

更新模型时,假设我想将字符串“ Path /”与字段图像连接起来,应该是这样的

+------+------------+
| id   | image      |
+------+------------+
|    1 | Path/image1|
|    2 | Path/image2|
|    3 | Path/image3|

2 个答案:

答案 0 :(得分:0)

以下应该可以工作

Model.objects.update(image=Value('Path/') + F('image'))

F引用了该字段的先前值

答案 1 :(得分:0)

您需要研究诸如Concat之类的Django函数:

from django.db.models.functions import Concat
Model.objects.update(image=Concat(Value('Path/'), F('image')))