Список товаров по категориям в шаблоне Django - PullRequest
4 голосов
/ 21 августа 2009

Каков наилучший способ создания HTML-кода, который имеет заголовок для каждой категории, и продуктов этой категории в шаблоне Django?

Я поиграл с идеей передать словарь или упорядоченный список ...

Ответы [ 3 ]

8 голосов
/ 21 августа 2009

Посмотрите на шаблон фильтра перегруппировки

http://docs.djangoproject.com/en/dev/ref/templates/builtins/#regroup

С его помощью вы можете сделать что-то вроде этого:

{% regroup products by category as products_by_category %}
{% for c in products_by_category %}
  <h1>{{c.grouper}}</h1>
  <ul>
    {% for p in c.list %}
      <li>{{p.name}}</li>
    {% endfor %}
  </ul>
{% endfor %}
4 голосов
/ 21 августа 2009

В дополнение к тому, что предлагает @Wade, вы также можете добавить метод к вашей модели категории для возврата продуктов, которые он имеет.

Пример ..

class Category:
... 
...  
    def get_products(self):
        return Product.objects.filter(category=self)

Тогда в шаблоне вы можете ..

{% for category in categories %} # assuming categories is passed from the view.
    {% for product in category.get_products %}
...
1 голос
/ 21 августа 2009

использовал отсортированный список в коде представления,

sorted(dom_obj.objects.all(), key=lambda d: d.sort_key)

и затем использовал тег фильтра

{% ifchanged %}<h1>{{ prod.cat }}</h1>{% endifchanged %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...