【问题标题】:Could not parse the remainder: '('-date_posted')' from 'post.answers_set.all.order_by('-date_posted')'无法解析剩余部分:来自 'post.answers_set.all.order_by('-date_posted')' 的 '('-date_posted')'
【发布时间】:2020-10-10 21:27:19
【问题描述】:

{% for answer in post.answers_set.all.order_by('-date_posted') %}

我正在使用这一行来检索 models.py 中与该问题相关的所有答案。当我在 django shell 中工作时,它工作正常,但在 django 模板中显示奇怪的错误“无法解析余数:'('-date_posted')' from 'post.answers_set.all.order_by('-date_posted') '”。有没有其他选择,请建议。提前感谢您的帮助。

【问题讨论】:

    标签: django django-models django-views django-templates jinja2


    【解决方案1】:

    您可以在 django 模板中使用过滤器。

    在app目录下创建“templatetags”目录,然后在其中创建“_init_.py”和“filters.py”文件。

    app_directory
        templatetags
              __init__.py
              filters.py
    

    将 _init_.py 留空,并将以下代码添加到 filters.py:

    from django import template
    register = template.Library()
    
    @register.filter
    def sort_by(queryset, order):
        return queryset.order_by(order)
    

    然后你可以在加载后在html文件中使用“sort_by”过滤器:

    <html lang="en">
    {% load filters %}
    <body>
    {% for answer in post.answers_set.all|sort_by:'-date_posted' %}
        <p>{{ answer.pk }}</p>
    {% endfor %}
    </body>
    </html>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-20
      • 2015-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-09
      • 2021-04-15
      • 2017-09-11
      相关资源
      最近更新 更多