2014-04-17 3 views
0

장고 템플릿에서 사용할 항목 목록이 있습니다. 각 항목에는 이름과 카테고리가 있습니다. 카테고리는 슬래시로 구분하여 하위 카테고리를 만들 수 있습니다. 플랫 목록을 중첩되지 않은 HTML 목록으로 변환해야합니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까? Django 뷰에서 파이썬으로 데이터 구조를 수정하는 것은 옵션이지만 Django의 템플릿 렌더링에서이를 수행하는 것이 좋습니다. JavaScript는 이것을 해결하는 옵션입니다."평면"목록을 중첩 된 HTML 정렬되지 않은 목록으로 변환

목록은 데이터베이스에서 항목을 쿼리하는 방식 때문에 올바르게 정렬됩니다. 나는이 항목에서 중첩 된 목록을 만들려면

[ 
    { category: 'Food/Fruits', name: 'Apple' }, 
    { category: 'Food/Fruits', name: 'Banana' }, 
    { category: 'Food/Fruits', name: 'Coconut' }, 
    { category: 'Food/Meats', name: 'Steak' }, 
    { category: 'Food/Meats', name: 'Chicken' }, 
    { category: 'Furniture', name: 'Chair' }, 
] 

: 파이썬 구조 주어진 예를 들어

. 같을 것이다

<label>Food</label> 
<ul> 
    <li> 
     <label>Fruits 
     <ul> 
      <li>Apple</li> 
      <li>Banana</li> 
      <li>Coconut</li> 
     </ul> 
     </label> 
    </li> 
    <li> 
     <label>Meats 
     <ul> 
      <li>Steak</li> 
      <li>Chicken</li> 
     </ul> 
     </label> 
    </li> 
</ul> 
</label> 
<label>Furniture</label> 
<ul> 
    <li>Chair</li> 
</ul> 
</label> 

렌더링 된 결과 :이로 전환 할

식품

  • 과일
    • 애플
    • 바나나
    • 코코넛
  • 고기
    • 스테이크
    • 치킨

가구

  • 의자

답변

1

사용 regroup 태그 :

<label>Food</label> 
{% regroup foods by category as category_list %} 
<ul> 
{% for category in category_list %} 
    <li> 
     <label>{{ category.grouper }}</label> 
     <ul> 
     {% for food in category.list %} 
      <li>{{ food.name }}</li> 
     {% endfor %} 
     </ul> 
    </li> 
{% endfor %} 
</ul> 
+0

예,이는이 * 정확한 * 재 그룹에 대한 사용 사례. –

관련 문제