Reputation: 599
I am trying to create the datetime filter but my class is not working as expected. I have used this package to do so. I am not getting any error but also I am not getting any error also, Here is my filter class :
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')
}
Model Class :
class MQTTFeedWeather(models.Model):
sensor = models.ForeignKey(
'SensorDevice',
on_delete = models.CASCADE
)
feed = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
And my views as :
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',)
I want to create a datetime filter on created_at table. When I am running the url :
http://172.61.25.51:8080/api/admin/application_feed/?created_at__range=2019-12-01,2020-01-08
Its not filtering the data. Can any body help me what i am doing wrong here!! Thanks!
Upvotes: 0
Views: 2437
Reputation: 384
Hi you can try like this
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
Upvotes: 2