Как добавить вложенное поле сериализатора
У меня есть вложенный сериализатор, который создает объекты, как и положено, но при этом возвращает ошибку.
Модели:
class Trip(models.Model):
startTime = models.DateTimeField()
endTime = models.DateTimeField()
def __str__(self):
return str(self.startTime) + " - " + str(self.endTime)
class TripFaceDetection(models.Model):
trip = models.ForeignKey(Trip, on_delete=models.CASCADE, blank=True)
firstFace = models.DateTimeField()
lastFace = models.DateTimeField()
faceCount = models.IntegerField()
Сериализаторы:
class TripSerializer(serializers.ModelSerializer):
faces = TripFaceDetectionSerializer()
class Meta:
model = Trip
fields = ('id', 'startTime', 'endTime', 'faces')
def create(self, validated_data):
face_data = validated_data.pop('faces')
trip = Trip.objects.create(**validated_data)
TripFaceDetection.objects.create(trip=trip, **face_data)
return trip
Объекты создаются, но я также получаю ошибку:
backend_1 | AttributeError: Получена ошибка AttributeError при попытке получить значение для поля
faces
на сериализатореTripSerializer
.
backend_1 | Поле сериализатора может быть названо неправильно и не соответствовать какому-либо атрибуту или ключу в экземпляре
Trip
.
Я понимаю, что у меня нет поля в модели Trip
, но я ожидаю, что поскольку я определяю поле в сериализаторе и создаю его в методе create
, он не должен возвращать эту ошибку.
Как я могу избавиться от этой ошибки, используя лица как для чтения/записи, так и оставляя структуру модели как есть?