Как создать фильтр даты и времени, используя Django Rest Framework Filters - PullRequest
0 голосов
/ 10 января 2020

Я пытаюсь создать фильтр даты и времени, но мой класс работает не так, как ожидалось. Я использовал этот пакет для этого. Я не получаю никакой ошибки, но также я не получаю никакой ошибки, вот мой класс фильтра:

import rest_framework_filters as filters
from core import models

class FeedFilter(filters.FilterSet):
    timestamp_gte  = filters.DateTimeFromToRangeFilter()
    class Meta:
        model = models.MQTTFeedWeather
        fields = {
            'created_at': ('lte', 'gte')
        }

Класс модели:

class MQTTFeedWeather(models.Model):
    sensor = models.ForeignKey(
        'SensorDevice',
        on_delete = models.CASCADE
    )
    feed = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)

И мои взгляды как:

class DeviceFeedListAPI(generics.ListAPIView):
    authentication_classes = (authentication.TokenAuthentication,)
    permission_classes = (permissions.IsAuthenticated, permissions.IsAuthenticated,)
    queryset = models.MQTTFeedWeather.objects.all()
    serializer_class = serializers.WeatherFeedSerializer
    pagination_class = pagination.PostLimitOffsetPagination
    filter_backends = (DjangoFilterBackend,OrderingFilter,SearchFilter)
    filter_class = filters.FeedFilter
    search_fields = ('feed',)

Я хочу создать фильтр даты и времени для таблицы созданной таблицы. Когда я запускаю URL:

http://172.61.25.51: 8080 / api / admin / application_feed /? Creation_at__range = 2019-12-01,2020-01-08

Это не фильтрует данные. Может ли какое-либо тело помочь мне, что я делаю здесь неправильно! Спасибо!

1 Ответ

1 голос
/ 10 января 2020

Привет, вы можете попробовать вот так

class FeedFilter(django_filters.rest_framework.FilterSet):
    start_date = django_filters.DateTimeFilter(field_name='created_at', lookup_expr='gte')
    end_date = django_filters.DateTimeFilter(field_name='created_at', lookup_expr='lte')

    class Meta:
        model = MQTTFeedWeather
        fields = ('start_date', 'end_date')

http://172.61.25.51: 8080 / api / admin / application_feed /? Start_date = 2019-12-01 & end_date2020-01-08

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...