所以我有一个查询...

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_propertyhybrid_property。例如:

class UserList(Base):
    ...
    contactCount = column_property(
        select(
            [func.count()],
            contact_id == Contact.id,
        ).label('contactCount'),
        deferred=True,
    )

10-06 05:17