Quantcast
Channel: Active questions tagged rest - Stack Overflow
Viewing all articles
Browse latest Browse all 3630

Django - How to filter by date with Django Rest Framework?

$
0
0

I have some model with a timestamp field:

models.py

class Event(models.Model):    event_type = models.CharField(        max_length=100,        choices=EVENT_TYPE_CHOICES,        verbose_name=_("Event Type")    )    event_model = models.CharField(        max_length=100,        choices=EVENT_MODEL_CHOICES,        verbose_name=_("Event Model")    )    timestamp = models.DateTimeField(auto_now=True, verbose_name=_("Timestamp"))

I'm then using Django-rest-framework to create an API endpoint for this class, with django-filter providing a filtering functionality as follows:

from .models import Eventfrom .serializers import EventSerializerfrom rest_framework import viewsets, filtersfrom rest_framework import renderersfrom rest_framework_csv import renderers as csv_renderersclass EventsView(viewsets.ReadOnlyModelViewSet):"""    A read only view that returns all audit events in JSON or CSV."""    queryset = Event.objects.all()    renderer_classes = (csv_renderers.CSVRenderer, renderers.JSONRenderer)    serializer_class = EventSerializer    filter_backends = (filters.DjangoFilterBackend,)    filter_fields = ('event_type', 'event_model', 'timestamp')

with the following settings:

REST_FRAMEWORK = {'DEFAULT_FILTER_BACKENDS': ('rest_framework.filters.DjangoFilterBackend',),}

I'm able to filter by event_type and event_model, but am having trouble filtering by the timestamp field. Essentially, I want to make an API call that equates to the following:

AuditEvent.objects.filter(timestamp__gte='2016-01-02 00:00+0000')

which I would expect I could do as follows:

response = self.client.get("/api/v1/events/?timestamp=2016-01-02 00:00+0000", **{'HTTP_ACCEPT': 'application/json'})

though that is incorect. How do I make an API call that returns all objects with a timestamp greater than or equal to a certain value?


Viewing all articles
Browse latest Browse all 3630

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>