2017-05-05 3 views
0

Alors, je fais cette application dans django et en utilisant ce code:Django: extrait de requête de modèle ne boucle dans le modèle

Mon étiquette de modèle dans le fichier video_select.py:

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

Mon modèle:

{% 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> 

Ceci n'affiche rien. Mais je ne suis pas sûr pourquoi.

A l'inverse, il suffit d'imprimer {% content_list%} n'imprime cette sortie:

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

donc clairement l'étiquette de modèle fonctionne. Mon models.py contient:

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

Ainsi, clairement la référence .video_path est également correcte.

Pouvez-vous m'aider à comprendre pourquoi ma liste n'est pas en boucle & impression? J'ai essayé de l'itérer directement dans le tag du template et ça marche. Cependant, je veux vraiment que la boucle s'exécute dans le template lui-même car j'essaye de créer des liens href pour chaque vidéo. Donc, je dois parcourir toutes les vidéos de la base de données et extraire leurs noms et URL, en créant des liens respectifs. Deux éléments sont requis pour chaque sortie de ligne: il est donc préférable d'envoyer une liste d'objets au modèle et d'extraire l'URL et les noms des vidéos dans une boucle.

+2

Y at-il une chance que toutes vos valeurs de chemin de vidéo sont vides? Je vais essayer {{contentt.id}} et voir si vous obtenez quelque chose –

Répondre

0

Vous devez appeler la balise template et l'affecter à une variable avant de pouvoir l'utiliser, vous ne pouvez pas simplement la référencer comme si elle était elle-même une variable.

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

Cela a fonctionné, merci! –