Как установить и добавить в столбец с условным случаем в Django?

Я хочу выполнить этот sql-запрос в Django

UPDATE `TABLE` SET `COLUMN` = (CASE WHEN `COLUMN` = "" THEN '100' ELSE CONCAT(`COLUMN`,'100') END)
WHERE `ID` IN [id1,id2,id3];

Я пробовал это

from django.db.models import Case, When, F
Table.object.filter(id__in=[id1,id2,id3]).
update(column=
  Case(
    When(column="",then="100"),
    default= column + "100",
  )
)

Я не знаю, как поставить concat по умолчанию. Пожалуйста, помогите.

Вы можете использовать F объекты :

from django.db.models import F

Table.objects.filter(...).update(column=F("column") + "100")

Вам не нужно проверять, если column == "", потому что это не будет иметь значения, когда вы добавите "100" к нему.

Вернуться на верх