В представлении 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? BTW - также попытался "str (F ('aField')) + aStringVar", но преобразовал результат выражения F в строку "(DEFAULT:)".