The `.create()` method does not support writable nested fields by default
tarantelot opened this issue · 0 comments
tarantelot commented
Hello, guys. I can successfully create a nested object with a serializer. But doing the same inside the view causes an error. Does someone know what I'm doing wrong? Thank you in advance.
Model:
class Item(models.Model):
...
tax = models.ForeignKey(Tax, to_field='id', on_delete=models.SET_NULL, null=True)
excise = models.ForeignKey(Excise, to_field='id', on_delete=models.SET_NULL, null=True)
Serializer:
class ItemSerializer(NestedUpdateMixin, serializers.ModelSerializer):
tax = TaxSerializer(many=False, required=False)
excise = ExciseSerializer(many=False, required=False)
class Meta:
model = Item
fields = '__all__'
View:
class ItemView(ModelViewSet):
serializer_class = ItemSerializer
model = Item
queryset = Item.objects.all()
def create(self, request, *args, **kwargs):
response = super().create(request, *args, **kwargs)
...
def perform_create(self, serializer):
return serializer.save(user=self.request.user)