@AntonioMargaretty

Как сделать фильтрацию постов по датам, которые постоянно будут меняться (как на сайте погоды)?

Моя задача: Сделать фильтрацию постов, через кнопки с датами.

Вот кнопки с датами:
646e25811b2ab767301489.png

А ниже должны располагаться некие посты и у каждого поста есть "дата публикации", на основе которой он отобразится.

Вот контекст:
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


А вот, на всякий случай, код этих кнопок:
<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>
  • Вопрос задан
  • 78 просмотров
Решения вопроса 1
Mi11er
@Mi11er
A human...
Кнопки сделать ссылками, на ссылку повесить
<a href="?date=2023-05-01">23 мая</a>
На вьюехе взять из параметра дату
date = self.request.GET.get("date",dt.date.today())
qs = Post.objects.filter(date_deliver=date)


p.s. пример упрощен. Его нужно доделать
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Искра Екатеринбург
от 80 000 до 100 000 ₽
Art gorka Санкт-Петербург
от 60 000 ₽
от 40 000 до 60 000 ₽
18 апр. 2024, в 21:56
2000 руб./за проект
18 апр. 2024, в 21:00
150 руб./за проект