Вложенные сериализаторы - как получить доступ к атрибутам из поля сериализатора во время валидации

Я создал вложенные сериализаторы и при выполнении метода 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
Вернуться на верх