장고 템플리트에서 context_data를 group하고 싶다 => regroup 사용
11264 단어 장고
경위
예를 들면, 프론트에서 표시하고 싶은 데이터가 이런 느낌이라고 한다.
goods = [
{'name':'だいこん', 'price': '100', 'genre':'野菜', 'made_in': '埼玉'},
{'name':'はまち', 'price': '500', 'genre':'魚', 'made_in': '富山'},
{'name':'すいか', 'price': '1000', 'genre':'野菜', 'made_in': '千葉'},
{'name':'かつお', 'price': '500', 'genre':'魚', 'made_in': '富山'},
{'name':'とけい', 'price': '10000', 'genre':'機械', 'made_in': '埼玉'},
{'name':'じてんしゃ', 'price': '20000', 'genre':'機械', 'made_in': '大阪'}
]
이것들을 genere 또는 made_in으로 함께 표시하고 싶습니다.
결론
데이터를 genere 또는 made_in으로 sort한 후 template에서 regroup을 사용한다.
(-> regroup은 sort하지 않기 때문에)
내용
우선 template의 내용.
{% regroup goods by genre as goods_list %}
<table class="table table-bordered table-sm">
{% for goods in goods_list %}
<thead>
<tr>
<th colspan="2" class="bg-primary">{{ goods.grouper }}</th>
</tr>
<tr class="bg-info">
<th>商品名</th>
<th>値段</th>
<th>産地</th>
</tr>
</thead>
<tbody>
{% for g in goods.list %}
<tr>
<td>{{ g.name }}</td>
<td>{{ g.price }}</td>
<td>{{ g.made_in }}</td>
</tr>
{% endfor %}
</tbody>
{% endfor %}
</table>
data를 sort하지 않는 경우
데이터가 genre로 sort되지 않기 때문에 야채로 묶이지 않지만 기계가 묶여 있습니다 ...
data를 sort하면
sort한다.
new_goods_list = sorted(goods, key=lambda k: k['genre'])
그러면 goods는 다음과 같이 sort된다.
$new_goods_list
[
{'name':'とけい', 'price': '10000', 'genre':'機械', 'made_in': '埼玉'},
{'name':'じてんしゃ', 'price': '20000', 'genre':'機械', 'made_in': '大阪'},
{'name':'だいこん', 'price': '100', 'genre':'野菜', 'made_in': '埼玉'},
{'name':'すいか', 'price': '1000', 'genre':'野菜', 'made_in': '千葉'},
{'name':'はまち', 'price': '500', 'genre':'魚', 'made_in': '富山'},
{'name':'かつお', 'price': '500', 'genre':'魚', 'made_in': '富山'}
]
따라서 표시는 다음과 같습니다.
made_in으로 정리하고 싶은 경우
1.made_in에서 sort
new_goods_list = sorted(goods, key=lambda k: k['made_in'])
2.template에서 group by made_in
{% regroup goods by made_in as goods_list %}
<table class="table table-bordered table-sm">
{% for goods in goods_list %}
<thead>
<tr>
<th colspan="2" class="bg-primary">{{ goods.grouper }}</th>
</tr>
<tr class="bg-info">
<th>商品名</th>
<th>値段</th>
<th>産地</th>
</tr>
</thead>
<tbody>
{% for g in goods.list %}
<tr>
<td>{{ g.name }}</td>
<td>{{ g.price }}</td>
<td>{{ g.made_in }}</td>
</tr>
{% endfor %}
</tbody>
{% endfor %}
</table>
3.완성
이상.
참고
Reference
이 문제에 관하여(장고 템플리트에서 context_data를 group하고 싶다 => regroup 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/wnoooo/items/9c2a371087daf05f76dc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)