Piyush
Piyush

Reputation: 599

How to filter date in djangorestframwork?

I am trying to filter the date from my model class but when i am passing the date from the URL its not filtering the dateTime. Here is my modal class:

class UserDeviceNotification(models.Model):
    user = models.ForeignKey(
        settings.AUTH_USER_MODEL,
        on_delete=models.CASCADE
    )
    mobile_device_id = models.ForeignKey(
        'UserMobileDevice',
        on_delete = models.CASCADE
    )
    notification_message = models.TextField()
    notification_title = models.TextField(null=True)
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.user.name

and

class UserNotificationDateFilterSerializer(serializers.ModelSerializer):
    class Meta:
        model = models.UserDeviceNotification
        fields = '__all__'

class FilterDateTime(django_filters.FilterSet):
    created_at = django_filters.DateTimeFilter(name="created_at",lookup_type="gte")

    class Meta:
        model = models.UserDeviceNotification
        fields = ['created_at']

View class :

class UserNotificationDateFilterAPI(generics.ListAPIView):
    authentication_classes = (authentication.TokenAuthentication,)
    permission_classes = (permissions.IsAuthenticated,)
    queryset = UserDeviceNotification.objects.all().order_by('-id')
    serializer_class = serializers.UserNotificationDateFilterSerializer
    pagination_class = PostLimitOffsetPagination
    filter_class = serializers.FilterDateTime

    def get_queryset(self):
        return self.queryset.filter(user=self.request.user)

I have no clue what I am doing wrong here. But when I am passing the URL as :

http://172.61.25.51:8080/api/user/filter_notification/?created_at=2019-07-17

I am not getting the filter response.

Upvotes: 0

Views: 35

Answers (1)

Related Questions