[Sqlalchemy-tickets] Issue #3413: Make new order by inspection system support hybrid properties (zz
Brought to you by:
zzzeek
|
From: Konsta V. <iss...@bi...> - 2015-05-02 16:31:12
|
New issue 3413: Make new order by inspection system support hybrid properties https://bitbucket.org/zzzeek/sqlalchemy/issue/3413/make-new-order-by-inspection-system Konsta Vesterinen: First of all I love the new order by inspection (thanks Mike!). It works like a charm for column properties however I noticed that it doesn't work with hybrids. This test case illustrates the problem: ``` #!python import sqlalchemy as sa from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.ext.hybrid import hybrid_property engine = sa.create_engine('sqlite:///:memory:') Base = declarative_base() Session = sessionmaker(bind=engine) session = Session() class User(Base): __tablename__ = 'text_item' id = sa.Column(sa.Integer, primary_key=True) first_name = sa.Column(sa.Unicode(255)) last_name = sa.Column(sa.Unicode(255)) @hybrid_property def name(self): """User's full name.""" return u'%s %s' % (self.first_name, self.last_name) @name.expression def name(self): return sa.func.concat(self.first_name, ' ', self.last_name) print session.query(User).order_by('name') print session.query(User).order_by(User.name) ``` First query returns warning whereas I think it should return the same result as the latter query. |