Django: использование выражения F для текстового поля в вызове обновления

В представлении django мне нужно добавить строковые данные в конец существующего текстового столбца в моей базе данных. Так, например, скажем, у меня есть таблица с именем «ATable», и она имеет поле с именем «aField». Я хотел бы иметь возможность добавлять строку в конец "aField" без условий гонки. Изначально у меня было это:

tableEntry = ATable.objects.get(id=100)
tableEntry.aField += aStringVar
tableEntry.save()

Проблема состоит в том, что если это выполняется одновременно, оба могут получить один и тот же «tableEntry», то каждый из них независимо обновляется, и последний, «сохраняющий», выигрывает, теряя данные, добавленные другим.

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

ATable.objects.filter(id=100).update(aField=F('aField') + aStringVar)

Проблема здесь, я получаю ошибку SQL, говоря:

operator does not exist: text + unknown
HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.

Попытка изменить значение на «str (aStringVar)», хотя это уже строка - не повезло ... Я нашел пару сообщений об ошибках в django, жалующихся на подобные проблемы, но я не нашел исправления или обходного пути. Есть ли какой-нибудь способ, которым я могу привести aStringVar так, чтобы он мог быть добавлен к тексту выражения F? Кстати, также попытался "str (F ('aField')) + aStringVar", но это преобразовало результат выражения F в строку "(DEFAULT:)".

Ответы на вопрос(5)

Ваш ответ на вопрос