无法解析剩余部分:来自 'post.answers_set.all.order_by('-date_posted')' 的 '('-date_posted')'

Posted

技术标签:

【中文标题】无法解析剩余部分:来自 \'post.answers_set.all.order_by(\'-date_posted\')\' 的 \'(\'-date_posted\')\'【英文标题】: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') '”。有没有其他选择,请建议。提前感谢您的帮助。

【问题讨论】:

【参考方案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>

【讨论】:

以上是关于无法解析剩余部分:来自 'post.answers_set.all.order_by('-date_posted')' 的 '('-date_posted')'的主要内容,如果未能解决你的问题,请参考以下文章

无法解析剩余部分:来自 'item[0]' Django 的'[0]'

无法解析剩余部分:来自 'sobj.id==obj.id' 的 '==obj.id'

Django:TemplateSyntaxError:无法解析剩余部分

模板语法错误无法解析剩余部分:来自“静态(“images/logo.png”)”的“(“images/logo.png”)”。在 django-jinja 模板中?

无法解析剩余部分

TemplateSyntaxError,无法解析剩余部分