【问题标题】:dictsort gives no resutsdictsort 没有结果
【发布时间】:2019-12-16 09:21:18
【问题描述】:

我在视图中的 2 个地方使用了查询集 fields

一个按另一个字段排序,另一个按分面排序。我想在页面上以 2 种方式对数据集进行排序,而不是两次传递查询集。

我正在尝试使用dictsort 来执行此操作,正如here 和其他一些问题所概述的那样。

我的代码中有这个:

{% for field in fields|dictsort:"facet_order" %}
    field.facet_order
{% endfor %}

但我没有看到任何渲染。

在没有dictsort 的情况下,循环可以正常工作,并且作为健全性检查,我已经运行以下没有问题:

{% for field in fields %}
    field.facet_order
{% endfor %}

它产生:

None None None None 1 0 None ...

我的代码在我看来很像下面的 django 文档示例:

{% for book in books|dictsort:"author.age" %}
    * {{ book.title }} ({{ book.author.name }})
{% endfor %}

我在这里做错了什么?

【问题讨论】:

    标签: django django-templates


    【解决方案1】:

    要回答我自己的问题,我必须按照我找到的答案here 中所述注册一个自定义模板函数

    我是按照here 概述的 djangos 示例完成的:

    # Add templatetags/poll_extras.py
    polls/
        templatetags/
            __init__.py
            poll_extras.py
    
    
    # Inside templatetags/poll_extras.py
    from django import template
    register = template.Library()
    
    @register.filter
    def sort_by(queryset, order):
        return queryset.order_by(order)
    
    
    # in the template:
    {% load poll_extras %}
    

    【讨论】:

      猜你喜欢
      • 2014-11-11
      • 1970-01-01
      • 1970-01-01
      • 2020-11-30
      • 2012-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多