В представлении 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:)".