# Рефакторинг ленты событий с фильтрацией по датам
Этот план описывает шаги по добавлению возможности фильтрации событий (новостей) по конкретной дате (год, месяц, день) в соответствии с вашим запросом «Лента событий за / События только за этот день - месяц - год».
## User Review Required
> [!IMPORTANT]
> Подтвердите, как именно вы хотите, чтобы выглядел интерфейс фильтрации:
> 1. Добавить поле выбора даты (Date Picker) в общую панель фильтров (там где поиск, категория, сортировка)?
> 2. Сделать плашки дат (например, "05 Мая 2026") в ленте кликабельными, чтобы при клике открывались события только за этот день?
> 3. Добавить оба варианта?
## Open Questions
> [!TIP]
> В текущем шаблоне события группируются по дате создания (`created_at`), а проверка активности идет по дате публикации (`published_at`). По какому полю правильнее фильтровать события при поиске за день: по `created_at` (когда новость добавили в базу) или по `published_at` (когда она стала доступна на сайте)?
> По умолчанию я сделаю фильтрацию по `published_at`, так как это логичнее для отображения на сайте.
## Proposed Changes
### Приложение News (`mysite/news/`)
Мы расширим функционал представления `news_list` для поддержки фильтрации по дате, а также обновим шаблон списка новостей.
#### [MODIFY] `views.py` (file:///l:/PYTHON/PROJECTS/dpits-cms/mysite/news/views.py)
- Добавление обработки GET-параметра `date` (в формате `YYYY-MM-DD` или `YYYY-MM` или `YYYY`).
- Изменение QuerySet для фильтрации новостей, если передан параметр даты (фильтрация по `published_at__year`, `published_at__month`, `published_at__day` или `published_at__date`).
- Передача выбранной даты в контекст шаблона (`selected_date`).
#### [MODIFY] `templates/news/list.html` (file:///l:/PYTHON/PROJECTS/dpits-cms/mysite/news/templates/news/list.html)
- Реорганизация панели фильтров для добавления нового поля ввода типа `date` (поиск по конкретному дню) или `month` (поиск за месяц).
- Превращение бейджей с датами (группировка по дням) в кликабельные ссылки: `<a href="?date=YYYY-MM-DD">...</a>`.
- Добавление кнопки "Сбросить дату", если фильтр активен, и изменение заголовка "Актуальные события" на "События за [Дата]", если выбрана дата.
## Verification Plan
### Manual Verification
- Открыть страницу новостей (`/news/`).
- Проверить, что в панели фильтров появилось поле для выбора даты.
- Выбрать конкретную дату и проверить, что отображаются события только за этот день.
- Кликнуть на плашку с датой в списке и убедиться, что происходит фильтрация.
- Сбросить фильтр и убедиться, что отображаются все актуальные события.
Обсуждение статьи
0К этой статье пока нет комментариев. Будьте первым, кто выразит свое мнение!
Оставить комментарий
Связанные новости
10Похожие материалы
Улучшению приложения main
Исправления и улучшения Admin-панели
Результаты рефакторинга файловой структуры, шаблонов и стилей проекта
Я обновил шаблоны страниц «Портфолио» и «Услуги»