Как сделать фильтрацию постов по датам, которые постоянно будут меняться (как на сайте погоды)?
Моя задача: Сделать фильтрацию постов, через кнопки с датами.
Вот кнопки с датами:
А ниже должны располагаться некие посты и у каждого поста есть "дата публикации", на основе которой он отобразится.
Вот контекст:
PHP
|
1 |
class PostListView(ListView): model = Post template_name = 'main/main.html' context_object_name = 'posts' def get_queryset(self): profile_list = Profile.objects.filter(address=self.request.user.profile.address) # Получили список нужных нам # профилей, здесь всё Ок, на это внимание не обращать queryset = Post.objects.filter(author__profile__in=profile_list).order_by('-date_posted') # Получ нужные posts, здесь тоже всё Ок # Дальше я не знаю как и что делать, чтобы выполнить конечную <b>Задачу</b> date_deli = (datetime.datetime.now() + datetime.timedelta(days=0)).date() # Сегодняшняя дата if self.request.POST.get('0'): date_deli = (datetime.datetime.now() + datetime.timedelta(days=0)).date() elif self.request.POST.get('1'): date_deli = (datetime.datetime.now() + datetime.timedelta(days=1)).date() elif self.request.POST.get('2'): date_deli = (datetime.datetime.now() + datetime.timedelta(days=2)).date() queryset = queryset.filter(date_deliver=date_deli) # Достаем все посты с данной датой return queryset |
А вот, на всякий случай, код этих кнопок:
PHP
|
1 |
<div class="row"> <h3>{{ 0|addDays|date:"F" }}</h3> <div class="col"> <p>{{ 0|addDays|date:"D" }}</p> <a href=""><button type="button" name="0" class="btn btn-primary">{{ 0|addDays|date:"j" }}</button></a> </div> <div class="col"> <p>{{ 1|addDays|date:"D" }}</p> <a href=""><button type="button" name="1" class="btn btn-primary">{{ 1|addDays|date:"j" }}</button></a> </div> <div class="col"> <p>{{ 2|addDays|date:"D" }}</p> <a href=""><button type="button" name="2" class="btn btn-primary">{{ 2|addDays|date:"j" }}</button></a> </div> <div class="col"> <p>{{ 3|addDays|date:"D" }}</p> <a href=""><button type="button" class="btn btn-primary">{{ 3|addDays|date:"j" }}</button></a> </div> <div class="col"> <p>{{ 4|addDays|date:"D" }}</p> <a href=""><button type="button" class="btn btn-primary">{{ 4|addDays|date:"j" }}</button></a> </div> <div class="col"> <p>{{ 5|addDays|date:"D" }}</p> <a href=""><button type="button" class="btn btn-primary">{{ 5|addDays|date:"j" }}</button></a> </div> <div class="col"> <p>{{ 6|addDays|date:"D" }}</p> <a href=""><button type="button" class="btn btn-primary">{{ 6|addDays|date:"j" }}</button></a> </div> </div> |
Дополнительно:
Кнопки сделать ссылками, на ссылку повесить
<a href="?date=2023-05-01">23 мая</a>
На вьюехе взять из параметра дату
PHP
|
1 |
date = self.request.GET.get("date",dt.date.today()) qs = Post.objects.filter(date_deliver=date) |
p.s. пример упрощен. Его нужно доделать
Для решения данной проблемы вы можете воспользоваться услугами фрилансеров. Мы выполним необходимую работу быстро и качественно.
Оставить комментарий Отменить
Ответы
- Есть ответ! к записи Как уменьшить масштаб меньше 100% в Windows 10 (22H2)
- Есть ответ! к записи Аналоги CloudFlare в России?
- Есть ответ! к записи Аналоги CloudFlare в России?
- Есть ответ! к записи Как называется человек, который дизайн придумает для сайта и сверстает его?
- Есть ответ! к записи Можно ли установить Яндекс.Диск на АльтЛинукс?
- Есть ответ! к записи Картинки мутные только на сафари, есть выход?
- Есть ответ! к записи Keenetic. Как настроить SSTP клиент с сертификатом?
- Есть ответ! к записи Чем заменить executor в aiogram 3?
Метки
1С-Битрикс (84)
AIOgram (46)
Android (94)
API (93)
C# (214)
CMS (33)
CSS (1143)
Discord (35)
Django (48)
Docker (32)
Google (482)
Google Chrome (126)
HTML (1394)
IT-образование (54)
Java (59)
JavaScript (1659)
JSON (42)
Laravel (44)
Linux (154)
MySQL (151)
Nginx (57)
Node.js (256)
PHP (1184)
PostgreSQL (80)
Python (543)
React (127)
SQL (396)
Telegram (101)
Ubuntu (44)
Unity (46)
Visual Studio Code (49)
Vue.js (52)
Windows (136)
Windows Server (38)
WordPress (52)
Битрикс24 (42)
Боты (39)
Веб-разработка (966)
Вёрстка (95)
Компьютерные сети (61)
Парсинг (33)
Поисковая оптимизация (149)
Системное администрирование (55)
Фронтенд (38)
Яндекс (53)

Для реализации фильтрации постов по датам, которые постоянно меняются, как на сайте погоды, вам понадобится использовать динамический подход. Вам нужно будет создать функцию, которая будет получать текущую дату и время, а затем сравнивать её с датой и временем каждого поста для определения их актуальности.
Прежде всего, вам необходимо хранить дату и время каждого поста в базе данных или в массиве, в зависимости от того, как вы храните данные на вашем сайте. После этого вы можете создать функцию, которая будет отображать только те посты, у которых дата публикации не превышает текущую дату и время.
Пример реализации на PHP:
Этот код сначала определяет текущую дату и время, затем проходит по всем постам и добавляет только те, у которых дата публикации не превышает текущую дату и время, в новый массив $filteredPosts. Наконец, он выводит отфильтрованные посты на экран.
Таким образом, вы сможете реализовать фильтрацию постов по датам, которые постоянно меняются, на вашем сайте, как это делается на сайте погоды.