I'm building django app with django rest framework (DRF). I have model with DateField type and I want to query based on date in yyyy-mm-dd format for example http://127.0.0.1:8000/dataharian/2021-08-09/. I used the path converter as mentioned here with some adjustments so the URL able to accepts yyyy-mm-dd format. Here is the DataHarian model, DataHarian view, the converter, and the URL.py file
DataHarian model:
class DataHarian(models.Model):
tanggal = models.DateField(blank=False, null=False)
kumulatif = models.IntegerField(default=0)
sembuh = models.IntegerField(default=0)
dalam_perawatan = models.IntegerField(default=0)
meninggal = models.IntegerField(default=0)
def __str__(self):
return str(self.tanggal)
DataHarian view:
class DataHarianDetail(generics.RetrieveAPIView):
queryset = DataHarian.objects.all()
serializer_class = DataHarianSerializer
permission_classes = [permissions.IsAuthenticatedOrReadOnly]
Converter : from datetime import datetime
class TanggalConverter:
regex = '\d{4}-\d{2}-\d{2}'
def to_python(self, value):
return datetime.strptime(value, '%Y-%m-%d')
def to_url(self, value):
return value
URL.py
from django.urls import path, register_converter
from datetime import datetime
from . import views, converters
register_converter(converters.TanggalConverter, 'yyyy-mm-dd')
urlpatterns = [path('dataharian/<yyyy-mm-dd:tanggal>', views.DataHarianDetail.as_view()),]
*Tanggal is date in Indonesian
If my explanation isn't good enough, please give a feedback Thank you for your response