Словарь с массивами в шаблонах Django - PullRequest
0 голосов
/ 27 декабря 2010

У меня есть словарь с массивами внутри:

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

Массив заполняется за один цикл:

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

Как мне получить доступ к массиву из шаблона django?Я пытался:

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

Но не работает.

Ответы [ 2 ]

0 голосов
/ 28 декабря 2010

Следуя исходному коду, ваш шаблон должен быть (также см. for тег документа ):

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

Но это не лучший способ сделать это, потому чтоПо вашему мнению, количество запросов будет равно количеству категорий.См. мой ответ на аналогичный вопрос для более эффективных решений.

0 голосов
/ 28 декабря 2010

Если в вашем сообщении есть внешний ключ, указывающий на категорию, вам даже не нужно делать это так сложно. Все, что вам нужно, это передать это в шаблон:

categories = Category.objects.all()

Тогда вы можете повторить в шаблоне:

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

Вы можете сделать это с любыми отношениями внешнего ключа. Надеюсь, что ответ на ваш вопрос!

...