@connor74

Как осуществить на странице вывод данных, сгруппированных по датам?

Доброе время суток!

Есть модель:
class Data(models.Model):

	date_ready = models.DateField('На дату')
	body = models.TextField('Задание по предмету', default='Не установлено')
	subject = models.ForeignKey('Subjects', verbose_name='Предмет')


Необходимо вывести данные на страницу следующим образом:
Дата: d.m.Y (последняя)
-----------------------------------------------------
- subject body 1
- subject body 2
...

Дата: d.m.Y (предпоследняя)
----------------------------------------------
...

и т.д.

То есть вначале вывод даты, а затем остальные поля, относящиеся к этой дате без самой даты. То есть группировка вокруг даты. Где (в модели, вьюхе или шаблоне) и как это лучше сделать?

Заранее благодарен.
  • Вопрос задан
  • 255 просмотров
Решения вопроса 1
loader777
@loader777
Python/django разработчик
Смотрите в сторону шаблонного тега regroup - djbook.ru/rel1.8/ref/templates/builtins.html#regroup

В views.py

data = Data.objects.all().order_by('date_ready')

В templates
{% regroup data by date_ready as data_by_date %}

<ul>
{% for data in data_by_date %}
    <li>{{ data.grouper }}
    <ul>
        {% for item in data.list %}
          <li>{{ item.subject  }} {{ item.body }}</li>
        {% endfor %}
    </ul>
    </li>
{% endfor %}
</ul>
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы