所以我有一个与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
所以我在想的也许是可能的。
答案 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)
请记住,如果模板中的逻辑变得复杂,也许是时候进行重构了。