Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import django_filters
- from rest_framework import permissions, viewsets, filters
- from datetime import timedelta
- # фильтр, чтобы захватывать след. день, т.к. при выборе даты, время устанавливается 00:00:00
- # и все записи этого дня не попадают в запрос
- class EndFilter(django_filters.DateFilter):
- def filter(self, qs, value):
- if value:
- value = value + timedelta(days=1)
- return super(EndFilter, self).filter(qs, value)
- # кастомный фильтр даты начала и окончания
- class DepositFilter(django_filters.FilterSet):
- time_start = django_filters.DateFilter(field_name='time_start', lookup_expr='gte')
- time_end = EndFilter(field_name='time_end', lookup_expr='lte')
- class Meta:
- model = Deposit
- fields = ['time_start', 'time_end']
- class DepositViewSet(viewsets.ModelViewSet):
- queryset = Deposit.objects.all()
- permission_classes = [permissions.IsAuthenticated]
- filter_backends = [DjangoFilterBackend, filters.SearchFilter]
- search_fields = ['table__number']
- # выбор кастомного фильтра
- filter_class = DepositFilter
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement