Шаблон Django: як отримати доступ до властивостей першого елемента у списку


88

Досить просто. У мене є список Python, який я передаю шаблону Django.

Я можу спеціально отримати доступ до першого пункту у цьому списку за допомогою

{{ thelist|first }}

Однак я також хочу отримати доступ до властивості цього елемента ... в ідеалі ви думаєте, що це буде виглядати так:

{{ thelist|first.propertyName }}

Але на жаль, це не так.

Чи існує якесь шаблонне рішення для цього, чи я просто збираюся передати додаткову змінну шаблону ...

Відповіді:


182

Ви можете отримати доступ до будь-якого елемента у списку через його індексний номер. У шаблоні це працює так само, як і будь-який інший пошук властивостей:

{{ thelist.0.propertyName }}

Хм однак це не працює з inline_admin_formset. Я думаю, ітератор працює не так, як я очікую.
Shayne

Привіт, Даніеле, ти не міг би перевірити моє запитання, пов’язане з шаблоном / переглядом stackoverflow.com/questions/34791375/… ?
Сатіш

Це набагато краще, ніж forцикл, щоб пройти кожне повідомлення про помилку. Дякую!
IIllIIll

1
А thelist.-1.propertyNameдля останнього предмета?
Asqiir

1
Ні, це, на жаль, не спрацює, Django не може проаналізувати це. Вам потрібно буде використовувати withтег разом із |last, як Марк пропонує в іншій відповіді.
Деніел Роузман,

33

Ви можете поєднати withтег firstшаблону з фільтром шаблону для доступу до властивості.

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

1
Для словника спочатку повертається кортеж для пари ключ / значення, це трохи потворно, але я додав інший з твердженням, щоб отримати лише значення. {% with thelist | перший як first_object%} {% з first_object.1 як об'єкт%} {{object}} {% endwith%} {% endwith%}
Метью Пердон

21

Якщо ви намагаєтеся отримати доступ до багатозначного поля, не забудьте додати all, так воно буде виглядатиobject.m2m_field.all.0.item_property


1
Може дати вам +10 із згадкою "все", ви врятували мій день;)
cwhisperer

0

потенційно чіткіша відповідь / синтаксис для доступу до властивості ManyToManyField у списку об’єктів, наданому шаблону django, виглядатиме так:

{{ object_list.0.m2m_fieldname.all.0.item_property }}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.