Jinja2 Django Python groupby('属性')定制的石斑鱼

时间:2018-04-29 06:09:43

标签: python django jinja2

所以我有一个与Django一起使用的Jinja2模板。我已经设置了一个执行groupby的for循环('属性')。有什么办法可以自定义石斑鱼套装。下面是模板代码。

{% for group in data('attribute')|groupby('property') %}
    {{ group.grouper }}
        {% for item in group.list %}
            {{ item }}
        {% endfor %}
{% endfor %}

我想做点什么:

for group in data('attribute')|groupby('property')|CUSTOM ORDERING SCHEME GOES HERE

我知道可以这样做:

for group in data('attribute')|groupby('property')|reverse

所以我在想的也许是可能的。

1 个答案:

答案 0 :(得分:0)

根据文档groupby返回一个元组,因此您可以通过访问元组的第一个元素进行排序:

for group in data('attribute')|groupby('property')|sort(attribute='0', reverse=True)

与常规|reverse的作用相同

但是,如果您按某个对象分组并希望按该对象的属性对其进行排序,例如property是这样的数据类:

@dataclass
class InventoryItem:
    name: str
    unit_price: float

例如,可以按unit_price进行排序

for group in data('attribute')|groupby('property')|sort(attribute='0.unit_price', reverse=True)

请记住,如果模板中的逻辑变得复杂,也许是时候进行重构了。