Django.core.exceptions.ValidationError: [''2022-05-19 00:00:00.000'' значение имеет неверный формат даты. Оно должно быть в формате YYYY-MM-DD."].

Я пытаюсь создать новый объект с помощью flutter и django rest framework , объект имеет поле даты, но когда я пытаюсь сделать post запрос и отправить данные из flutter front end в django api я получаю эту ошибку :

django.core.exceptions.ValidationError: ['“2022-05-19 00:00:00.000” value has an invalid date 
format. It must be in YYYY-MM-DD format.']
[17/May/2022 22:18:23] "POST /api/reservations/create/ HTTP/1.1" 500 181841

это метод post :

       void creerReservations() async {
        _setIds();
      
      client.post(Uri.parse("http://10.0.2.2:8000/api/reservations/create/") , body: {
          "date" : dateRendezvous.toString(),
          "startTime" :startTime.toString(),
          "endTime" :endTime.toString() , 
          "description" :  ' no description for now',
          "patient" : _patient_id.toString(),
          "docteur" : _docteur_id.toString() , 
          "disponible" : "True"
      });
}

Django class :

 # Create your models here.

class Reservation(models.Model):
date = models.DateField()
startTime =  models.TimeField()
endTime =  models.TimeField()
description = models.TextField()
patient = models.ForeignKey(User, on_delete=models.CASCADE ,  related_name="patient")
docteur = models.ForeignKey(User, on_delete=models.CASCADE , related_name="docteur")
disponible =  models.BooleanField( default= True )

def __str__(self):
    return self.date

сериализатор :

class ReservationSerializer(ModelSerializer):
  class Meta : 
    model = Reservation
    fields = '__all__'

типы переменных :

 DateTime dateRendezvous = DateTime.now();
 TimeOfDay startTime = TimeOfDay(hour: 15, minute: 0);
 TimeOfDay endTime = TimeOfDay(hour: 15, minute: 0);
 int _patient_id = 0;
 int _docteur_id = 0;
 bool? disponible; 

Я попробовал это решение, и оно сработало для меня, но оно не является техническим: dateRendezvous.toString().substring(0,9), Я взял первые 10 символов из "2022-05-19 00:00:00.000" и все работает нормально .

Вам нужно использовать DateTimeField, если вам нужны оба компонента. DateField используется только для дат.

class Reservation(models.Model):
    date = models.DateField()

Должно быть

class Reservation(models.Model):
    date = models.DateTimeField()
Вернуться на верх