Я использую декларативную базу SQLAlchemy для определения моей модели. Я определил свойство name, которое вычисляется из одного столбца (title):
class Entry(Base):
__tablename__ = "blog_entry"
id = Column(Integer, primary_key=True)
title = Column(Unicode(255))
...
@property
def name(self):
return re.sub(r'[^a-zA-Z0-9 ]','',self.title).replace(' ','-').lower()
При попытке выполнить запрос с использованием name SQLAlchemy выдает ошибку:
Session.query(Entry).filter(Entry.name == my_name).first()
>>> ArgumentError: filter() argument must be of type sqlalchemy.sql.ClauseElement or string
После некоторого исследования я обнаружил, что, возможно, comparable_using() может помочь, но я не смог найти ни одного примера, показывающего компаратор, который ссылается на другой столбец таблицы.
Это вообще возможно или есть лучший подход?