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.
Хотя перечисленный экземпляр инспекции сохраняется в БД.
В чем может быть проблема? Спасибо.