Django Rest Framework - Напишите явный метод `.update()` для сериализатора

Я пытаюсь сделать запрос put с помощью DRF, но появляется эта ошибка:

AssertionError: The `.update()` method does not support writable dotted-source fields by default.
Write an explicit `.update()` method for serializer `model.serializers.ModelSerializer`, or set `read_only=True` on dotted-source serializer fields.

Вот такой вид:

class Model(GenericAPIView):
    def put(self, request, pk):

        model = MyModel.objects.filter(id=pk).first()

        serializer = ModelSerializer(model, data=request.data, partial=True)

        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

Это сериализатор:

class ModelSerializer(serializers.ModelSerializer):

    class Meta:
        model = MyModel
        fields = '__all__'

    def update(self, instance, validated_data):
        status = validated_data.pop('status', None)
        model = super().update(instance, validated_data)

        if status:
            model.set_status(status)
            model.save()

        return model

Что не так с методом update()? Также, как я могу обновить только одно поле объекта?

Вернуться на верх