I am trying to make a writable nested serializer in Django Rest Framework. But I get validation error: slug is required. but it is the foreign key and it is not known before insert of the parent object takes place.
Here is my models and serializers:
Models:
class Letter(BaseModel):
char = models.CharField(
max_length=1,
)
slug = models.ForeignKey(
to="core.LetterSlug",
related_name="letters",
on_delete=models.CASCADE,
)
class LetterSlug(BaseModel):
char = models.CharField(
max_length=1,
)
Serializers:
class LetterSerializer(serializers.ModelSerializer):
class Meta:
model = Letter
fields = '__all__'
class LetterSlugSerializer(serializers.ModelSerializer):
letters = LetterSerializer(many=True,instance=Letter.objects.all())
class Meta:
model = LetterSlug
fields = ('char', 'letters')
def create(self, validated_data):
letter_data = validated_data.pop('letters')
slug = LetterSlug.objects.create(**validated_data)
Letter.objects.create(slug=slug, **letter_data)
return slug
I expect it to add several Letter objects all of which share the same foreign key to the newly created LetterSlug object.
I tried commenting out contents of my create method, and made sure that it's during validations before calling create method.