обновить поле в модели, используя то же поле с функцией update () django - PullRequest
0 голосов
/ 11 октября 2019

У меня есть много записей для обновления поля, я должен сделать это с помощью функции .update (), которая уже поставляется с ORM Django. Мне нужно обновить это поле, объединяя строку со значением того же поля.

Я пытался использовать аннотирование, с выражением F и значением. Но это не сработало, потому что в аннотации поля я не могу использовать одно и то же поле.

Вот что я пытался сделать:

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

У меня естьследующая модель:

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

При обновлении модели предположим, что я хочу объединить строку «Путь /» с изображением поля, должно быть что-то вроде этого

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

Ответы [ 2 ]

0 голосов
/ 11 октября 2019

Вам нужно посмотреть на такие функции Django, как Concat:

from django.db.models.functions import Concat
Model.objects.update(image=Concat(Value('Path/'), F('image')))
0 голосов
/ 11 октября 2019

Должно работать следующее

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

F дает ссылку на предыдущее значение поля

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...