【问题标题】:Sorting foreign key items in the template对模板中的外键项进行排序
【发布时间】:2015-01-30 23:45:05
【问题描述】:

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

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)

那个方法没什么问题,但是每次我需要不同的顺序时添加一个小方法听起来不对。

【问题讨论】:

  • 当您说“以下代码在应用程序中工作”时,开头是什么意思?什么样的应用?参考 jinja2 过滤器的文档,我认为您需要使用排序过滤器和属性参数:jinja.pocoo.org/docs/dev/templates/#sort

标签: python jinja2 peewee


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    我猜你正在寻找这个:

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

    【讨论】:

      猜你喜欢
      • 2015-09-10
      • 2012-08-27
      • 2011-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-20
      • 2018-09-26
      • 2018-02-04
      相关资源
      最近更新 更多