对模板中的外键项进行排序

时间:2015-01-30 23:45:05

标签: python jinja2 peewee

以下代码适用于应用程序:

user.tweets.order_by(Tweet.message)

以下代码适用于jinja2模板:

{% for tweet in user.tweets %}

但是以下代码在模板中失败:

{% for tweet in user.tweets.order_by(Tweet.message) %}

除了将以下方法添加到User类之外,是否有更简洁的方法对jinja2模板中的推文进行排序?

def tweets_by_message(self):
    return user.tweets.order_by(Tweet.message)

该方法没有任何问题,但每次需要不同的订单时添加一些方法听起来都不对。

2 个答案:

答案 0 :(得分:-1)

也许您可以将Tweet放入模板上下文中。或者更好的是,使用上下文处理器将所有模型转储到模板上下文中,以便它们始终可用。

@app.context_processor
def _inject_models():
    return {
        'Tweet': Tweet,
        'User': User,
        'Foo': Foo,
    }

我不知道这是否有效,但可能值得一试?

答案 1 :(得分:-1)

我猜你正在寻找这个:

{% for tweet in user.tweets|sort(attribute='message') %}