2010-12-27 5 views
0

Ich habe Wörterbuch mit Arrays innen:Wörterbuch mit Arrays in django Vorlagen

dicarr = {'category': ['post1','post2', 'e.g.'], 'category2': ['post1','post2']} 

Array in einem Zyklus gefüllt ist:

dicarr = {} 
for category in Categories.objects.all(): 
    category_posts = Post.objects.filter(category=category) 
    dicarr[category] = [post for post in category_posts ] 

Wie kann ich den Zugriff auf Array von django Vorlage bekommen? Ich habe versucht:

{% for arrdic in dicarr %} 
    {{ arrdic.name }} 
     {% for i in arrdic.posts %} 
      {{ i.name }} 
     {% endfor %} 
{% endfor %} 

Aber funktioniert nicht.

Antwort

0

Angenommen, Sie haben in Ihrem Post einen Fremdschlüssel, der auf Kategorie zeigt, müssen Sie das nicht einmal so kompliziert machen. Alles, was Sie brauchen, ist dies auf die Vorlage übergeben:

categories = Category.objects.all() 

Dann können Sie wie folgt in der Vorlage iterieren:

{% for category in categories %} 
    {{ category.name }} 
    {% for post in categories.post_set.all %} 
     {{ post.name }} 
    {% endfor %} 
{% endfor %} 

Sie diese mit beliebigen Fremdschlüsselbeziehungen tun. Hoffe das beantwortet deine Frage!

{% for category, posts in dicarr.items %} 
    {{ category.name }} 
     {% for post in posts %} 
      {{ post.name }} 
     {% endfor %} 
{% endfor %} 

Aber das ist nicht der beste Weg, dies zu tun, weil Ihre Ansicht Anzahl der Abfragen gleich die Anzahl produzieren:

+0

Danke für die Antwort. Das funktioniert, und Sie wiesen mich auf Wissenslücken im Django hin. Danke =) – bosha