Как установить фильтр даты с начальной и конечной датой django остальные кадры - PullRequest
0 голосов
/ 04 февраля 2020

У меня есть view.py

class eventList(ListAPIView):
queryset = Event.objects.all().filter(is_active=1, is_approved=1)
serializer_class = eventSerializer
filter_backends = [DjangoFilterBackend,
                   filters.SearchFilter, filters.OrderingFilter]
search_fields = ['event_name', 'event_address', 'start_date', 'start_time', 'end_time', 'age_max',
                 'age_min', 'event_organizer__name', 'event_type__name', 'event_city__name', 'event_tag__name']

filterset_fields = ['id', 'event_name', 'start_date', 'start_time', 'end_date', 'end_time',
                    'age_max', 'age_min', 'event_organizer', 'event_type', 'event_city', 'event_tag']

ordering_fields = '__all__'
ordering = ['-start_date']

как я получаю события на основе start_date диапазон дат как

http://192.168.0.115: 8000 / api / allEvents /? start_date__gte = 2019-11-16 & start_date__lt = 2019-11-24

Я хочу это на filterset_fields , Как реализован этот сценарий

1 Ответ

0 голосов
/ 04 февраля 2020

Получил это решение

  • двойное подчеркивание gte для больше чем равно
  • двойное подчеркивание gt для больше чем
  • двойное подчеркивание lte для меньше чем равно
  • двойное подчеркивание lt для меньше чем

    filterset_fields = {
        'start_date':['gte', 'lte', 'exact', 'gt', 'lt'],
        'id':['exact'],
        'event_name':['exact'],
        'start_time':['exact'],
        'end_date':['exact'],
        'end_time':['exact'],
        'age_max':['gte', 'lte', 'exact', 'gt', 'lt'],
        'age_min':['gte', 'lte', 'exact', 'gt', 'lt'],
        'event_organizer__name':['exact'],
        'event_type__name':['exact'],
        'event_city__name':['exact'],'event_tag__name':['exact']
    }
    
...