Używam deklaratywnej podstawy SQLAlchemy do zdefiniowania mojego modelu. I określono właściwość name
który oblicza się z jednej kolumny (title
):SQLAlchemy: właściwość niestandardowa zapytania w oparciu o pole tabeli
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()
Podczas próby wykonania kwerendy przy użyciu name
, SQLAlchemy zgłasza błąd:
Session.query(Entry).filter(Entry.name == my_name).first()
>>> ArgumentError: filter() argument must be of type sqlalchemy.sql.ClauseElement or string
Po zbadaniu przez chwilę, Zauważyłem, że może pomóc może comparable_using()
, ale nie mogłem znaleźć żadnego przykładu pokazującego komparator, który odwołuje się do innej kolumny tabeli.
Czy to możliwe, czy jest lepsze podejście?
Dzięki, teraz widzę, że muszę spróbować innego podejścia. – amercader