есть инстанс Project у которого есть список project.tags
в списке с инстансами ProjectTag есть тег, который есть в project.tags
прохожусь циклом по первому циклу и проверяю, есть ли тег в списке project.tags и если да, выдаю ошибку пользователю
if tag in project.tags:
return ReturnData(
error=f'Tag with ID {tag.id} is already added to this project!'
)
но оно почему-то не попадает под это условие
print(project.tags[1] == tag.id)
даже сделал сравнение этих обьектов и оно мне выдает False, хотя это 100% один инстанс.
Но все пофиксилось когда добавил в модели ProjectTag реализацию eq
def __eq__(self, other):
if isinstance(other, ProjectTag):
return self.id == other.id
return False
так вот, в алхимии получается нету такого функционала под капотом и получается чтобы мне сравнивать инстансы моделей алхимии, мне нужно в моделях определять магический метод eq?
Полезно выводить все данные, если чего-то не понимаешь. Выведи отдельно project.tags[1] и tag.id. Что-то мне подсказывает, что ты сравниваешь объект тэга с интом Вопрос со звёздочкой -- является ли повторный биндинг тэга логической ошибкой? Не похрену ли, что он уже висит? Набор тэгов суть сет -- просто добавил/убрал
Нет, я выводил все и проверял 100 раз. И теги выводил, и их айдишники. И сравнивал эти объекты и их айдишники
Всм? Об этом не знал, то есть если добавить существующий тег в список тегов проекта, то просто ничего не произойдет?
Если так запрос напишешь, конечно же: — insert .. on duplicate ... — insert ignore (deprecated)
Обсуждают сегодня