When I send a post request from drf web interface I am getting this error - "Datetime has wrong format. Use one of these formats instead: YYYY-MM-DDThh:mm:ss.uuuuuu[+HHMM|-HHMM]."
This is my code
models.py
from django.db import models
from UserAuthenticator.models import User
class UserInsuranceModel(models.Model):
customer_name = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
insurance_id = models.CharField(max_length=100, unique=True)
vehicle_number = models.CharField(max_length=100, unique=True)
rc_front = models.ImageField(upload_to="media", null=False, blank=False)
rc_back = models.ImageField(upload_to="media", null=True, blank=True)
nominee_name = models.CharField(max_length=100)
nominee_dob = models.DateField(null=True, blank=True)
insurance_created_at = models.DateTimeField(auto_created=True)
insurance_started_at = models.DateTimeField(null=True)
insurance_valid_till = models.DateTimeField(null=True)
is_insurance_verified = models.BooleanField(default=False)
is_insurance_cancelled = models.BooleanField(default=False)
def __str__(self):
return str(self.customer_name)`
serializer.py
from rest_framework import serializers
from .models import UserInsuranceModel
from UserAuthenticator.models import User
class UserInsuranceSerializer(serializers.ModelSerializer):
insurance_started_at = serializers.DateTimeField(format="%Y-%m-%dT%H:%M:%S.%fZ")
insurance_valid_till = serializers.DateTimeField(format="%Y-%m-%dT%H:%M:%S.%fZ")
class Meta:
model = UserInsuranceModel
fields = ('customer_name', 'insurance_id', 'vehicle_number', 'rc_front', 'rc_back', 'nominee_name',
'nominee_dob', 'insurance_created_at', 'insurance_started_at', 'insurance_valid_till'
'is_insurance_verified', 'is_insurance_cancelled')`
views.py
from rest_framework import generics, status
from .models import UserInsuranceModel
from .serializer import UserInsuranceSerializer
from rest_framework.views import Response
class UserInsuranceApiView(generics.CreateAPIView):
queryset = UserInsuranceModel.objects.all()
serializer_class = UserInsuranceSerializer
def create(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
serializer.save()
return Response(serializer.data)
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('new-insurance/', views.UserInsuranceApiView.as_view(), name='new-insurance'),
]
I have tried all the resources on the internet, but none of them worked for me. So, I am posting here, and if anyone can help, it will be appreciated. Thank you in advance
In your serialiser you are specifying Z which I assume means time in UTC. try replacing those lines with these.
insurance_started_at = serializers.DateTimeField(format="%Y-%m-%dT%H:%M:%S.%f")
insurance_valid_till = serializers.DateTimeField(format="%Y-%m-%dT%H:%M:%S.%f")