2016-04-01 7 views
0

Ich habe eine for-Schleifen, die viele gleiche Werte für verschiedene Objekte hat. Ich versuche, nur die einzigartigen Werte im Auge zu behalten.Verfolgen von Variablenwerten in Django für Schleife und Vermeidung von Duplikaten

`{% with cla.lodge_name|stringformat:"s" as hotel_stayed %} 
{% if hotel_stayed not in unique_hotel_list %}<!-- How to do this?? in django template --> 
    {% for lodge in lodges %} 
    {% if lodge.lodge_name == hotel_stayed %} 
     <div>....</div> 
     ` 

ich Problem habe eine Liste zu schaffen, die Werte anhängen, damit ich überprüfen kann, ob der neue Wert vorhanden bereits im unique_hotel_list ist. Ich habe auch versucht, ein Wörterbuch mit Namen als Schlüssel und Wert als Zahl zu machen. Wenn count größer als 1 ist, muss nicht fortgefahren werden. Auch in Filter-Tags gesucht, konnte aber nicht erfolgreich sein.

Vielen Dank für Ihre Hilfe!

Antwort

0

Ich würde dringend empfehlen, dies im Python-View-Code zu tun.

Wenn Sie dies jedoch wirklich in der Vorlage tun müssen, dann ist die einzige Möglichkeit, dies relativ einfach zu tun, wenn Sie den HTML-Code für alle Hotels erstellen und einen "versteckten" Tag hinzufügen sind in der unique_hotel_list. So können Sie Ihre div wie folgt aussehen:

<div 
{% for hotel in unique_hotel_list %} 
    {% ifequal hotel hotel_stayed %} 
    hidden 
    {% endifequal %} 
{% endfor %} 
> 
</div> 
+0

Nach einigem Nachdenken, habe ich im Grunde genommen alles gemacht, was ich in der Schablone gemacht habe. Daher gab es kein Problem, dass ich in der Vorlage konfrontiert hatte. Ich habe eine unique_hotel_list erstellt, die ich an die Vorlage weitergegeben habe. Es hat funktioniert, wie ich es ursprünglich wollte! Danke! – sanukee

0

Das ist wie Sie fühlt sich für Y fragen, während Ihr Problem wirklich X.

Bedeutung ist: Warum gibt es in der Liste dupliziert, in erster Linie? Sind sie "gültig" und du brauchst sie woanders? Oder brauchst du wirklich brauche eine Liste ohne Duplikate aber vielleicht eine Zählung oder Gruppierung (auch Aggregation genannt).

Ich vermute, Sie führen eine Abfrage auf Django ORM, die eine Verknüpfung, die doppelte Zeilen ergibt. Wenn Sie den ursprünglichen Django-Code angeben, der diese Liste erstellt, erhalten Sie möglicherweise die richtige Antwort auf Ihr ursprüngliches Problem.

In jedem Fall ist dies komplex genug, um in der Django-Ansicht getan werden. Fügen Sie (oder zusätzlich) zur ursprünglichen Liste die geänderte Liste dem Vorlagenkontext hinzu. Oder erstellen Sie die Datenstruktur, die am besten zu Ihren Markup-Anforderungen passt.

+0

@Rishdinha, Zwei Arten von Objekten, die ich suche, haben eine Viele-zu-Viele-Beziehung. Daher gibt es denselben Wert (Hotels) für verschiedene Kurse und umgekehrt. – sanukee

+0

Die for-Schleifen sollen andere Hotels finden, die zusammen mit einem gegebenen Hotel benutzt wurden. Also muss ich alle Kurse anschauen, die ein bestimmtes Hotel und alle anderen Hotels in diesem Kurs benutzt haben. Da ein Hotel in vielen Kursen genutzt werden kann, gibt es Dubletten. Bis jetzt, in Vorlagen, kann ich alle Hotels finden, die zusammen mit einem gegebenen Hotel benutzt werden, und wenn ein Hotel durch mehr als 1 Kurs verwendet wird, wird es das mehr Male zeigen. Dank für die Richtung. – sanukee

Verwandte Themen