Django serializer validate related serializer

У меня есть две Django Model, одна зависит от другой. Я сделал сериализаторы для них, но я не понимаю, как я должен связать сериализатор, чтобы один вызывал валидацию дочерней модели.

class Tree(Model):
    id = AutoField(primary_key=True, auto_created=True)

class Leaf(Model):
    id = AutoField(primary_key=True, auto_created=True)
    tree= ForeignKey(Tree, on_delete=SET_NULL, db_column="etude")

Мои сериализаторы выглядят следующим образом

class TreeSerializer(ModelSerializer):
    leafList = LeafSerializer(source="leaf_set", many=True)

    class Meta:
        model = Tree
        fields = [
            "id",
            "leafList",
        ]
    def create(self, validated_data):
        leafs = validated_data.pop("leaf_set", [])
        instance = Tree.objects.create(**validated_data)
        for leaf in leafs :
            leaf.update({"tree": instance})
            Leaf.objects.create(**leaf)

class LeafSerializer(ModelSerializer):
    class Meta:
        model = Leaf
        fields = [
            "id",
            "tree"
        ]

        def validate(self, attrs):
            return False

Но мой LeafSerializer, похоже, никогда не вызывается. Все объекты создаются правильно, но метод LeafSerializer'а validate никогда не запускается, таким образом не предотвращая создание, когда Leaf недействителен. Я не могу найти в django rest documentation инструкций о том, как сделать валидацию на связанном объекте. Я просмотрел документацию django rest relations documentation, но я не уверен, что это то, что я ищу.

Я думаю о явном создании LeafSerializer внутри функции create TreeSerializer. Я смогу проверять данные, но я не уверен, что это правильный способ сделать это (и, вероятно, это не самое подходящее место, делать это внутри функции validate TreeSerializer, вероятно, "менее плохо")

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