所以我有一个与 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/