2010-03-11 12 views
6

Jestem bardzo nowy w Django, około tygodnia w nim.Czy w szablonie django można sprawdzić, czy obiekt znajduje się na liście?

Robię stronę, na której użytkownicy wprowadzają różne rzeczy, a inni użytkownicy mogą głosować, czy im się podoba, czy nie. Wiem, że to nie jest takie nowatorskie, ale to dobry projekt, aby nauczyć się wielu narzędzi.

Mam tabelę wiele do wielu do przechowywania, który lubi lub nie lubi co. Zanim wyrenderuję stronę, wyciągnę wszystkie rzeczy lubiane i nielubiane dla bieżącego użytkownika oraz rzeczy, które pokażę na stronie.

Kiedy renderuję stronę, przeglądam listę rzeczy, które zamierzam pokazać i wydrukuję je po jednym na raz. Chcę pokazać użytkownikowi, jakie rzeczy im się podobały, a które nie.

Tak więc w moim szablonie django mam obiekt o nazwie entry. Mam również dwie listy obiektów, które nazywają się podobieństwami i nie. Czy istnieje sposób sprawdzenia, czy wpis jest członkiem dowolnej listy wewnątrz mojego szablonu django.

myślę co szukam jest filtrem, gdzie mogę powiedzieć coś

{% if entry|in:likes %} 

lub

{% if likes|contains:entry %} 

wiem Mógłbym dodać metodę do mojego modelu i sprawdzić każdy indywidualnie, ale wydaje się, że byłoby to intensywne w przypadku bazy danych.

Czy istnieje lepszy sposób myślenia o tym problemie?

Odpowiedz

0

Idź here. Bardzo podobne do tego, czego używają na pniu. "Zapisz to jako smart_if.py w folderze templatetags jednej z twoich aplikacji. Wtedy prosty {% load smart_if%} zastąpi nudny wbudowany szablon Django {% if%} nowym inteligentnym."

+0

Jeszcze tego nie próbowałem, ale wygląda na to, czego potrzebuję. – AlexH

13

Jeśli używasz najnowszej wersji Django to tylko

{% if entry in likes %} 

Refer django docs

+0

Używam 1.1.1. czy jest jakaś opcja bez aktualizacji? Kiedy dev będzie produkcją? Czy ktoś wie? – AlexH

+1

Niektórzy ludzie wiedzą. Oto link ze strony głównej: http://www.djangoproject.com/weblog/2010/mar/09/django-1_2-release-schedule/ –

-1

Jeśli nie używasz tułowia jedną z następujących czynności powinno działać:

Filter:

Zamienna "jeśli", w dużej mierze podstawa do new functionality w nadchodzącym wydaniu 1.2:

+0

Zalecane jest tutaj dołączenie rozwiązania, a nie tylko linków do niego. – emi

Powiązane problemy