首页 > 解决方案 > 尝试按函数订购 Flask SQLAlchemy 对象

问题描述

我正在尝试构建一个具有类别、线程和帖子的 Flask 应用程序。我想按每个类别中的最新帖子对类别进行排序。

我的类别模型具有以下功能,可以正确找到最新帖子的时间戳:

def last_post_time(self):
    last_time = Post.query.join(Thread,Thread.id==Post.thread_id).filter(
        Thread.category_id == self.id).order_by(
        Post.timestamp.desc()).first().timestamp
    return last_time

要订购这个,我想运行类似的东西:

categories = Category.query.order_by(Category.last_post.desc()).paginate(
    page, current_app.config['CATEGORIES_PER_PAGE'], False)

不幸的是,我认为这适用于列而不是函数的结果。

我试着按照这个来制作一个可以订购的混合属性,但我还没有运气。

老实说,我真的不知道除了在 last_post_time() 类函数上方添加一个 @hybrid_property 装饰器之外我应该做什么。

如何修改 last_post_time 函数,以便我的 order_by 查询可以处理它?

标签: pythonflasksql-order-byflask-sqlalchemy

解决方案


推荐阅读