Достаточно странное прописание api...
class SizeDiskSet(viewsets.ReadOnlyModelViewSet):
queryset = SizeDisk.objects.all()
serializer_class = SizeDiskSerializer
permission_classes = [permissions.AllowAny]
def get_serializer_class(self):
return SizeDiskSerializer
1.Вы прописали явно класс сериалайзера в атрибутах класса, зачем вы пишете функцию get_serializer_class?
2. Вы прописуете модификатор доступа permissions.AllowAny, но это поведение по-умолчанию, явно его указывать не нужно(если вы ,конечно, не изменяли значение по умолчанию в settings.py)
3.Вас не смущает, что вы используете viewsets.ReadOnlyModelViewSet для добавления в базу данных? Разве название не говорит само за себя?
serializers.py:
from rest_framework import serializers
from .models import YourModel
class YourModelSerializer(serializers.ModelSerializer):
class Meta:
model = YourModel
fields = "__all__" #Выберет все поля, но рекомендуется указываять явно при помощи списка или кортежа:['field1', 'field2']
api.py:
from rest_framework.viewsets import ModelViewSet
from .serializers import YourModelSerializer
from .models import YourModel
class YourModelViewset(ModelViewSet):
queryset = YourModel.objects.all()
serializer_class = YourModelSerializer
urls.py
from django.urls import path, include
from . import api
from rest_framework import routers
router = routers.SimpleRouter()
router.register(r'model-list', api.YourModelViewset)
urlpatterns = [
...
path('api/v1', include(router.urls)),
]
Теперь список всех записей будет доступен по ссылке api/v1/model-list/
По этой же ссылке вы можете делать POST И GET запросы.
По адресу api/v1/model-list/pk/ Вы получите 1 запись по первичному ключу
По этой ссылке вы сможете делать GET, PUT, PATCH и DELETE запросы (мб еще какие-то но я другие не использовал).
После того, как вы все это проделаете можно будет приступить к выполнению задачи. Первое что пришло мне на ум - переопределить метод create, Метод прописан в миксине CreateModelMixin и состоит в классе ModelViewSet:
from rest_framework.response import Response
class YourModelViewset(ModelViewset):
#то, что мы рантше писали
def create(self, request, *args, **kwargs):
serializer = YourModelSerializer(data = request.data)
serializer.is_valid(raise_exception = True)
serializer.save()
return Response({"data":serializer.data})
После этого вам вернутся только что сохраненные данные