Django 템플릿 : 목록에서 첫 번째 항목의 속성에 액세스하는 방법


88

아주 간단합니다. Django 템플릿에 전달하는 Python 목록이 있습니다.

다음을 사용하여이 목록의 첫 번째 항목에 구체적으로 액세스 할 수 있습니다.

{{ thelist|first }}

그러나 해당 항목의 속성에 액세스하고 싶습니다. 이상적으로는 다음과 같이 보일 것이라고 생각합니다.

{{ thelist|first.propertyName }}

그러나 아아, 그렇지 않습니다.

이것에 대한 템플릿 솔루션이 있습니까, 아니면 추가 템플릿 변수를 전달하는 내 자신을 찾을 것입니까?

답변:


182

색인 번호를 통해 목록의 모든 항목에 액세스 할 수 있습니다. 템플릿에서 이것은 다른 속성 조회와 동일하게 작동합니다.

{{ thelist.0.propertyName }}

흠. 그러나 inline_admin_formset에서는 작동하지 않습니다. 반복자가 예상대로 작동하지 않는 것 같습니다.
Shayne

안녕하세요 Daniel, template / view stackoverflow.com/questions/34791375/… 와 관련된 제 질문을 확인해 주 시겠습니까?
Sathish

이것은 for각 오류 메시지를 통과 하는 루프 보다 훨씬 낫습니다 . 감사!
IIllIIll

1
그리고 thelist.-1.propertyName마지막 항목은?
Asqiir

1
아니요, 안타깝게도 작동하지 않습니다. Django는이를 구문 분석 할 수 없습니다. Mark가 다른 답변에서 제안한 것처럼와 with함께 태그 를 사용해야합니다 |last.
Daniel Roseman

33

with템플릿 태그를 first템플릿 필터 와 결합 하여 속성에 액세스 할 수 있습니다.

{% with thelist|first as first_object %}
    {{ first_object.propertyname }}
{% endwith %}

1
딕셔너리의 경우 먼저 키 / 값 쌍에 대한 튜플을 반환합니다. 약간 못 생겼지 만 값만 가져 오기 위해 다른 with 문을 추가했습니다. {% thelist와 | 첫번째 first_object %로} {개체 %로 first_object.1와 %} {{목적}} {% ENDWITH %} {%가 ENDWITH %}
매튜 퍼든

21

당신이 manytomany 필드에 액세스하려는 경우, 추가 기억 all이 같이 있도록,object.m2m_field.all.0.item_property


1
"all"을 언급하면서 +10을 줄 수 있습니다. 당신은 내 하루를 구했습니다.)
cwhisperer

0

django 템플릿에 제공된 객체 목록의 ManyToManyField 속성에 액세스하기위한 잠재적으로 더 명확한 답변 / 구문은 다음과 같습니다.

{{ object_list.0.m2m_fieldname.all.0.item_property }}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.