【问题标题】: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>