2017-05-05 10 views
0

だから、私はジャンゴで、このアプリを作ると、このコードを使用しています:ジャンゴ:モデルのクエリ抽出物はテンプレートでループしていない

video_select.pyファイル内のマイテンプレートタグ:

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

マイテンプレート:

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

これは何も表示しません。しかし、私はなぜそれがわからない。

逆に、単に{%のcontent_listの%}をプリントアウトすると、この出力を印刷ん

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

だから明確テンプレートタグが機能しています。私のmodels.pyには次のものが含まれています:

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

ですので、明らかに.video_path参照も正しいです。

なぜ私のリストがループしていないのか理解してもらえますか?&は印刷されますか?私はテンプレートのタグで直接反復しようとしました、そして、それは働いています。しかし、私は実際には、各ビデオのhrefリンクを作成しようとしているので、テンプレート自体でループを実行したい。だから、私はデータベース内のすべての動画をループし、名前とURLを抽出してそれぞれのリンクを作成する必要があります。これは、各行の出力に必要な2つの項目です:したがって、オブジェクトのリストをテンプレートに送信して、ループの動画のURLと名前を抽出するほうがよいでしょう。

+2

すべてのvideo_pathの値が空白になる可能性はありますか?私は{{contentt.id}}を試して何かが得られるかどうかを確認します –

答えて

0

実際にテンプレートタグを呼び出して使用する前に変数に割り当てる必要があります。あたかも自身が変数であるかのように参照することはできません。

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

これはうまくいきました、ありがとう! –

関連する問題