Задать вопрос
@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>
  • Вопрос задан
  • 98 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 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. пример упрощен. Его нужно доделать
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы