beda-software/drf-writable-nested

The `.create()` method does not support writable nested fields by default

tarantelot opened this issue · 0 comments

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)