import datetime from django.conf import settings from django.contrib import admin from django.utils import timezone from django.utils.dateformat import format as django_dateformat from dateutil import rrule __all__ = [ 'DateListFilter' ] class DateListFilter(admin.SimpleListFilter): title = 'Дата' parameter_name = 'date' def lookups(self, request, model_admin): today = datetime.datetime.today() date_start = today - datetime.timedelta(days=3) date_end = today + datetime.timedelta(days=2) lookups = [] for date in rrule.rrule(rrule.DAILY, dtstart=date_start, until=date_end): postfix = '' if date.date() == today.date(): postfix = ' (сегодня)' lookups.append([ date.strftime('%Y-%m-%d'), f"{django_dateformat(date, 'D d E')}{postfix}" ]) return lookups def queryset(self, request, queryset): if self.value(): return queryset.filter(date=self.value())