2017-07-17 4 views
0

DB Daten:Django Template-Schleife, wo letztes Element Wert nicht Null

pk,text 
2|null 
3|foo 
4|null 
5|bar 
6|null 

Ich beabsichtige, die angegebenen Daten in einer Schleife, aber ich will nur über die Elemente iterieren, wo text Spaltenwert NOT null ist. Außerdem muss ich wissen, welches der letzte Wert ist, wobei text Spalte NOT null ist.

Dies ist meine beabsichtigte Ansicht, sobald die Vorlage gemacht hat:

3 foo 
5 bar *last* 

In Python, wie durch eine, wenn die Bedingung in Liste Verständnis, wie erreicht:

[x for x in my_loop if x != None] 

Rendering dies in der views.py ist sehr unpraktisch, da diese Daten auch im Rest der Vorlage verwendet werden, und das würde auch zu viel unnötigen Speicher verschlingen.

Ist dies jedoch beim Rendern in Django-Vorlage möglich?

Vielen Dank!

+0

Sie können rückwärts umkehren und das erste Element mit einem 'text' Wert' NOT NULL' greift auf seinen _index_ oder was auch immer Sie wollen mit diesem Objekt. Hoffe, es beantwortet Ihre Frage :) – Mirza715

+0

Möglich, aber ... Das würde eine Variable erfordern, um anzuzeigen, dass ein 'Text'-Wert vorhanden war ... – Sazzy

Antwort

0

Dies sollte funktionieren.

{% for item in items %} 
    {% if item.text %} 
    <span>{{ item.text }}</span> 
    {% endif %} 
{% endfor %} 
+0

Danke, das mache ich zur Zeit. Wie finde ich jedoch das letzte Element in dieser Schleife, in dem _text_ NICHT NULL ist? – Sazzy

+0

Schauen Sie sich den Abschnitt in diesem Link unter dem Abschnitt "für" an. Speziell "forloop.last". Sie können das zu Ihrer '{% if%}' Anweisung mit einer 'and' Klausel hinzufügen. https://docs.djangoproject.com/en/dev/ref/templates/builtins/#for –

+0

So wird _pk: 6_ ausgedruckt. Ich brauche _pk: 5_ um als letztes Element markiert zu werden, und nicht _pk: 6_. Noch mehr Ideen? – Sazzy