Как получить id родительской модели в дочернем сериализаторе?
Как получить родительский id в дочернем сериализаторе?
class Parent(models.Model):
name = models.CharField('')
date = models.DateField('')
class Material(models.Model):
name = models.CharField('')
description = models.TextField('')
parent = models.ForeignKey(Parent, on_delete=models.CASCADE)
serializer = ParentSerializer(data=item)
if serializer.is_valid(raise_exception=True):
serializer.save()
class MaterialSerializer(serializers.ModelSerializer):
parent = ?
class Meta:
model = Material
fields = ['id', 'name', 'description', 'parent']
class ParentSerializer(serializers.ModelSerializer):
material = MaterialSerializer(many=True)
class Meta:
model = Parent
fields = ['name', 'date', 'material']
Я не понимаю, как получить родительский id в дочернем сериализаторе
Просто используйте:
class MaterialSerializer(serializers.ModelSerializer):
class Meta:
model = Material
fields = ['id', 'name', 'description', 'parent_id']
Вы не хотите включать сам parent: это запустит рекурсивный процесс, то есть JSON-блоб будет содержать элемент, его детей, затем родителя, который затем будет содержать детей и таким образом раздуется до бесконечного JSON-блоба.