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, вероятно, "менее плохо")