2010-03-11 9 views
6

Ich bin sehr neu in Django, etwa eine Woche hinein.Ist es möglich, in einer Django-Vorlage zu prüfen, ob ein Objekt in einer Liste enthalten ist?

Ich mache eine Website, wo Benutzer Zeug eingeben, dann können andere Benutzer abstimmen, ob sie das Zeug mögen oder nicht. Ich weiß, dass es nicht so neuartig ist, aber es ist ein gutes Projekt, ein paar Werkzeuge zu lernen.

Ich habe eine Viele-zu-Viele-Tabelle, um zu speichern, wer was mag oder was nicht. Bevor ich die Seite rende, ziehe ich alle Likes und Abneigungen für den aktuellen Benutzer heraus, zusammen mit den Sachen, die ich auf der Seite zeigen werde.

Wenn ich die Seite rendere, gehe ich durch die Liste der Sachen, die ich zeigen werde und drucke sie einzeln aus. Ich möchte dem User zeigen, welche Sachen er mochte und welche nicht.

Also in meiner Django-Vorlage habe ich ein Objekt namens Eintrag. Ich habe auch zwei Listen von Objekten namens Likes und Dislikes. Gibt es eine Möglichkeit festzustellen, ob der Eintrag Mitglied einer der beiden Listen innerhalb meiner Django-Vorlage ist?

denke ich, was ich suche ein Filter ist, wo ich so etwas wie

{% if entry|in:likes %} 

oder

{% if likes|contains:entry %} 

sagen kann, ich weiß, ich könnte ein Verfahren zu meinem Modell hinzufügen und für jede überprüfen Eintrag einzeln, aber das scheint Datenbankintensiv zu sein.

Gibt es eine bessere Möglichkeit, über dieses Problem nachzudenken?

Antwort

0

Go here. Sehr ähnlich zu dem, was sie am Kofferraum benutzen. "Speichern Sie dies als smart_if.py im Vorlagenordner einer Ihrer Apps. Dann ersetzt eine einfache {% load smart_if%} die langweilige integrierte Django {% if%} Vorlage durch die neue Smart Version."

+0

Habe das noch nicht probiert, aber es scheint, als ob ich was brauche. – AlexH

13

Wenn Sie neueste django Version verwenden, dann ist es nur

{% if entry in likes %} 

Refer django docs

+0

Ich benutze 1.1.1. Gibt es eine Option ohne Upgrade? Wann wird dev Produktion sein? Weiß jemand? – AlexH

+1

Einige Leute wissen. Hier ist der Link von der Homepage: http://www.djangoproject.com/weblog/2010/mar/09/django-1_2-release-schedule/ –

-1

Wenn Sie nicht Stamm sollte eine der folgenden Aktionen ausgeführt arbeiten:

Filter:

Ersatz "if" -Tag, weitgehend die Grundlage für die new functionality in der kommenden 1.2-Release:

+0

Es wird empfohlen, die Lösung hier zu integrieren, nicht nur die Links dazu. – emi

Verwandte Themen