DRF AssertionError: Ожидалось `time`, а получено `datetime`.

У меня есть модель:

class Inspection(models.Model):
    vendor = models.ForeignKey(Vendor, on_delete=models.CASCADE,
                               related_name='vendor_inspections')
    inspection_date = models.DateField(default=date.today)
    inspection_time = models.TimeField(default=timezone.now)

    ...

    class Meta:
        unique_together = (('vendor', 'inspection_date'),)

serializer:

class InspectionSerializer(serializers.ModelSerializer):

    class Meta:
        model = Inspection
        fields = ['vendor', 'inspection_date', 'inspection_time']

и modelviewset:

class InspectionModelViewSet(viewsets.ModelViewSet):

    serializer_class = InspectionSerializer
    queryset = Inspection.objects.all()

Я хочу изменять поля данных и времени с помощью запросов PUT/PATCH или устанавливать их значения вручную при создании экземпляра, если это необходимо, иначе текущая дата и время должны быть сохранены.

Когда я отправляю POST запрос с или без inspection_time в полезной нагрузке, я получаю эту ошибку:

AssertionError: Expected a `time`, but got a `datetime`.
Refusing to coerce, as this may mean losing timezone information.
Use a custom read-only field and deal with timezone issues explicitly.

Эта ошибка не возникает, если я удаляю inspection_time из полей в классе serializer Meta. Я реализовал метод валидации полей сериализатора просто для того, чтобы понять, что происходит:

def validate_inspection_time(self, inspection_time):
    raise Exception(inspection_time)

Перед validate_inspection_time возникает вышеупомянутая AssertionError. Хотя перечисленный экземпляр инспекции сохраняется в БД. В чем может быть проблема? Спасибо.

Вернуться на верх