2014-06-13 2 views
0

간단한 테이블 생성은 django에서 정말 쉽지만 복잡한 테이블을 생성하는 방법을 생각할 수는 없습니다. 현재 내 테이블Django로 복잡한 테이블 생성하기

<table class="table-striped table"> 
    {% for row in table %} 
    <tr> 
     {% for item in row %} 
     <td>{{ item }}</td> 
      {% endfor %} 
    </tr> 
    {% endfor %} 
</table> 

그러나 테이블 변수에 삽입되는 방식으로, 데이터를 배치하는 2 차원 배열로 잘 작동으로 렌더링

복잡한 테이블된다 생성 내 엉덩이. 헤더와 문자열, datetime, 그리고 객체에 대한 문자열과 목록이있는 테이블을 인쇄하려고한다고 가정 해 봅시다.

table = [ 
    ["value/key", Datetime] 
    ["value 1", [Object, Object, Object]] 
] 

개체는 특정 구문 분석이 필요한 개체입니다.

the table that is currently generated

나는이 모양을 변경 다른 개체없이, 표기법을 나열하는 형식지고 대신에, 내부적으로 된 루프로 목록이 필요합니다.

+0

당신이 질문을 정교하게 수 있을까? 왜 다른 for 루프를 추가 할 수 없습니까? – arocks

+0

다른 for 루프를 실행할 때 일반 문자열을 반복합니다. 게다가 객체는 매우 특정한 포맷팅을 필요로하기 때문에 어떤 종류의 타입 검증이 필요합니다. 나는 장고에서 그렇게 할 수있는 것을 보지 못했다. – Samyn

+0

질문은 매우 모호합니다. 사용하신 견해와 모델을 공유하십시오. – arocks

답변

1

값을 받고 문자열을 렌더링하는 new template filter을 만들거나 목록 인 경우 목록의 각 항목을 렌더링합니다.

# custom_filters.py 
@register.filter(name='string_or_list') 
def string_or_list(value, delimiter='\n'): 
    """Renders string or each instance of a list with given delimiter.""" 
    if isinstance(value, list): 
     return delimiter.join(value) 
    return value 

그런 다음 템플릿에서 당신이 할 것 :

{% load custom_filters %} 
<table class="table-striped table"> 
    {% for row in table %} 
    <tr> 
     {% for item in row %} 
      <td>{{ item|string_or_list }}</td> 
     {% endfor %} 
    </tr> 
    {% endfor %} 
</table> 
관련 문제