Вложенные сериализаторы - как получить доступ к атрибутам из поля сериализатора во время валидации
Я создал вложенные сериализаторы и при выполнении метода validate в родительском сериализаторе у меня нет данных из дочернего сериализатора. Когда я выдаю ошибку с 'attrs' в качестве сообщения, я получаю только данные из полей 'pk' и 'name'. Как я могу получить данные из OpenningTimeSerializer в WarehouseSerializer?
serializers.py
class OpenningTimeSerializer(serializers.ModelSerializer):
class Meta:
model = OpenningTime
fields = ['weekday', 'from_hour', 'to_hour']
class WarehouseSerializer(serializers.ModelSerializer):
openning_time = OpenningTimeSerializer(many=True)
class Meta:
model = Warehouse
fields = ['pk', 'name', 'openning_time']
def validate(self, attrs):
raise serializers.ValidationError(attrs)
Окей, я разобрался с этим. Я могу иметь доступ к данным из дочерних сериализаторов по self.initial_data, дополнительно нужно преобразовать строковые данные и передать в сериализатор.
def validate(self, attrs):
openning_data = json.loads(self.initial_data['openning_time'])
serializer = OpenningTimeSerializer(data=openning_data)
if not serializer.is_valid():
raise serializers.ValidationError(serializer.errors)
serializer.data