所以我有一个查询...
qry = Query(models.UserList).filter(...)
models.UserList
包含一个mixin方法,该方法将返回相关表的count
所以我想做的是...
qry = qry.order_by(models.UserList.contactCount)
但是,这当然会产生无效的sql。
那我该怎么做
qry.add_column((this.contactCount).label("contactCount"))
this.contactCount
只是错误的伪代码,但希望您能理解。我一直在研究如何执行此操作,但是sqlalchemy doc并不是最容易找到的东西。
任何帮助表示赞赏
最佳答案
您可以为此使用column_property
或hybrid_property
。例如:
class UserList(Base):
...
contactCount = column_property(
select(
[func.count()],
contact_id == Contact.id,
).label('contactCount'),
deferred=True,
)