У меня есть функция обновления пользователя, и я разрешаю пользователям изменять свой адрес электронной почты, но этот же адрес должен быть уникальным в базе данных, поэтому перед обновлением я должен проверить, существует ли их новый адрес электронной почты в базе данных, но запрос яиспользуйте, чтобы проверить, что возвращает ту же строку.Пример:
user = User.query.get(1)
user.email = 'some@email.com'
if user.validate(): # The validate function performs a query to see if 'some@email.com' is already taken
user.save()
Теперь перейдем к функции проверки:
check = User.query.filter_by(User.email='some@email.com').first()
if check:
# email already exists
Проблема в том, что check
содержит того же пользователя, которого я редактирую.Sqlalchemy отправляет обновление в базу данных, но при какой-то транзакции, поэтому мой запрос возвращает того же пользователя, которого я редактирую.Я решил это, создав второй объект сеанса, но кажется излишним.Есть идеи получше?Имею ли я смысл?