python - Jinja2 Django Python groupby ('attribute' ) 自定义排序的石斑鱼

标签 python django jinja2

所以我有一个与 Django 一起使用的 Jinja2 模板。我已经设置了一个执行 groupby('attribute') 的 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

所以我的想法是也许这是可能的。

最佳答案

根据文档 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)

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

关于python - Jinja2 Django Python groupby ('attribute' ) 自定义排序的石斑鱼,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50083873/

相关文章:

django - 为什么我们要使用 django-webpack-loader?

jinja2 - 如何在 Jinja2 中使用 FunctionLoader 包含宏/其他模板?

Python- flask : render_template() not found

python - 更改 Jinja 子模板以响应 HTML 事件

python - 如何更改使用 host_subplot 创建的轴的标签(来自 AxesGrid 工具包)

python - 如何使用替换方法替换句子中的第二个 "is"

django - 在Django 1.7上的数据迁移中,直到原子 block 结束,才能执行查询

python - 如何处理 Django REST 框架中的 URL 参数

python - TensorFlow - 如何使用每个示例一次且仅一次评估所有测试集

python - Discord Python Bot 在使用后台任务时破坏我的命令