Django Templating: cách truy cập thuộc tính của mục đầu tiên trong danh sách


88

Khá đơn giản. Tôi có một danh sách Python mà tôi đang chuyển đến mẫu Django.

Tôi có thể truy cập cụ thể vào mục đầu tiên trong danh sách này bằng cách sử dụng

{{ thelist|first }}

Tuy nhiên, tôi cũng muốn truy cập một thuộc tính của mục đó ... lý tưởng nhất là bạn nghĩ nó sẽ giống như thế này:

{{ thelist|first.propertyName }}

Nhưng than ôi, nó không.

Có giải pháp mẫu nào cho vấn đề này không, hay tôi chỉ thấy mình chuyển một biến mẫu bổ sung ...

Câu trả lời:


182

Bạn có thể truy cập bất kỳ mục nào trong danh sách thông qua số chỉ mục của nó. Trong một mẫu, điều này hoạt động giống như bất kỳ tra cứu thuộc tính nào khác:

{{ thelist.0.propertyName }}

Hừ! Tuy nhiên, điều này không hoạt động với inline_admin_formset. Tôi đoán trình vòng lặp không hoạt động như tôi mong đợi.
Shayne

Xin chào Daniel, Bạn có thể kiểm tra câu hỏi của tôi liên quan đến template / view stackoverflow.com/questions/34791375/… không?
Sathish

Điều này tốt hơn nhiều so với một forvòng lặp để đi qua từng thông báo lỗi. Cảm ơn!
Toàn bộ

1
thelist.-1.propertyNamecho mục cuối cùng?
Asqiir

1
Không, điều đó sẽ không hoạt động rất tiếc, Django không thể phân tích cú pháp đó. Bạn sẽ cần sử dụng withthẻ cùng với |last, như Mark gợi ý trong câu trả lời khác.
Daniel Roseman

33

Bạn có thể kết hợp withthẻ mẫu với firstbộ lọc mẫu để truy cập thuộc tính.

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

1
Đối với từ điển, đầu tiên trả về một bộ giá trị cho cặp khóa / giá trị, nó hơi xấu nhưng tôi đã thêm một câu lệnh khác với câu lệnh để chỉ lấy các giá trị. {% with thelist | first as first_object%} {% with first_object.1 as object%} {{object}} {% endwith%} {% endwith%}
Matthew Purdon

21

Nếu bạn đang cố gắng truy cập vào một trường manytomany, hãy nhớ thêm all, vì vậy nó sẽ giống nhưobject.m2m_field.all.0.item_property


1
Có thể cho bạn +10 đề cập đến "tất cả", bạn đã cứu một ngày của tôi;)
cwhisperer

0

một câu trả lời / cú pháp có khả năng rõ ràng hơn để truy cập thuộc tính ManyToManyField trong danh sách đối tượng được cung cấp cho mẫu django sẽ trông giống như sau:

{{ object_list.0.m2m_fieldname.all.0.item_property }}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.