2017-05-05 17 views
0

Also, ich mache diese App in django und mit diesem Code:Django: Modellabfrage Extrakt nicht in Vorlage Looping

My Template-Tag in video_select.py Datei:

@register.assignment_tag 
def content_list(): 
    contentlist = vvideo.objects.all() 
    return contentlist 

Meine Vorlage:

{% load video_select %} 
<article id="menu" style="height:80%;"> 
    <h2 class="major">Menu</h2> 
    <div> 
     {% for contentt in content_list %} {{ contentt.video_path }} {% endfor %} 
    </div> 
    <h2 class="major">End Menu</h2> 
</article> 

Dies zeigt nichts an. Aber ich bin mir nicht sicher warum.

Im Gegensatz dazu einfach den Ausdruck {% content_list%} aus dieser Ausgabe nicht gedruckt werden:

[<vvideo: vvideo object>, <vvideo: vvideo object>, <vvideo: vvideo object>, <vvideo: vvideo object>, <vvideo: vvideo object>, <vvideo: vvideo object>] 

So klar den Template-Tag arbeitet. Meine models.py enthält:

class vvideo(models.Model): 
    video_path = models.CharField(max_length=200, blank=True, null=True) 

Also, eindeutig ist die .Video_Pfad Referenz auch korrekt.

Können Sie mir helfen zu verstehen, warum meine Liste nicht & Ausdrucken? Ich habe versucht, es direkt im Template-Tag zu iterieren und es funktioniert. Ich möchte jedoch, dass die Schleife in der Vorlage selbst ausgeführt wird, weil ich versuche, für jedes Video href-Links zu erstellen. Also muss ich alle Videos in der Datenbank durchlaufen und ihre Namen und URLs extrahieren, um entsprechende Links zu erstellen. Das sind zwei Punkte, die für jede Zeilenausgabe benötigt werden: Es ist daher wahrscheinlich besser, eine Liste von Objekten an die Vorlage zu senden und sie die URL und die Namen der Videos in einer Schleife extrahieren zu lassen.

+2

Gibt es eine Chance, dass alle Ihre video_path Werte leer sind? Ich würde versuchen {{contentt.id}} und sehen, ob Sie etwas bekommen –

Antwort

0

Sie müssen das Schablonen-Tag tatsächlich aufrufen und es einer Variablen zuweisen, bevor Sie es verwenden können. Sie können es nicht einfach so referenzieren, als ob es selbst eine Variable wäre.

{% content_list as my_content %} 
{% for contentt in my_content %} {{ contentt.video_path }} {% endfor %} 
+0

Das hat funktioniert, danke! –