diff --git a/core/apps/api/admin/products.py b/core/apps/api/admin/products.py index 3a2e6bd..db43fec 100644 --- a/core/apps/api/admin/products.py +++ b/core/apps/api/admin/products.py @@ -11,6 +11,7 @@ class SubProductInline(TabularInline): @admin.register(ProductsModel) class ProductsAdmin(ModelAdmin): list_display = ("id", "name", "price", "order", "subcategory", "created_at") + list_editable = ("order",) list_filter = ("subcategory__category__filial", "subcategory__category", "subcategory", "created_at") search_fields = ("name", "subcategory__name", "subcategory__category__name") list_select_related = ("subcategory", "subcategory__category", "subcategory__category__filial") diff --git a/core/apps/api/serializers/products/products.py b/core/apps/api/serializers/products/products.py index e3db09b..d96df3b 100644 --- a/core/apps/api/serializers/products/products.py +++ b/core/apps/api/serializers/products/products.py @@ -66,3 +66,9 @@ class CreateProductsSerializer(BaseProductsSerializer): "image", "order", ] + + +class UpdateProductOrderSerializer(serializers.ModelSerializer): + class Meta: + model = ProductsModel + fields = ["id", "order"] diff --git a/core/apps/api/views/products.py b/core/apps/api/views/products.py index 9d6011c..50b6274 100644 --- a/core/apps/api/views/products.py +++ b/core/apps/api/views/products.py @@ -1,5 +1,6 @@ from django_core.mixins import BaseViewSetMixin from drf_spectacular.utils import extend_schema +from rest_framework.mixins import UpdateModelMixin from rest_framework.permissions import AllowAny from rest_framework.viewsets import ReadOnlyModelViewSet @@ -8,22 +9,23 @@ from core.apps.api.serializers.products import ( CreateProductsSerializer, ListProductsSerializer, RetrieveProductsSerializer, + UpdateProductOrderSerializer, ) - - from core.apps.api.filters.products import ProductsFilter @extend_schema(tags=["products"]) -class ProductsView(BaseViewSetMixin, ReadOnlyModelViewSet): +class ProductsView(BaseViewSetMixin, UpdateModelMixin, ReadOnlyModelViewSet): queryset = ProductsModel.objects.all() serializer_class = ListProductsSerializer permission_classes = [AllowAny] filterset_class = ProductsFilter + http_method_names = ["get", "patch", "head", "options"] action_permission_classes = {} action_serializer_class = { "list": ListProductsSerializer, "retrieve": RetrieveProductsSerializer, "create": CreateProductsSerializer, + "partial_update": UpdateProductOrderSerializer, }