diff --git a/shop/api/v1/serializers.py b/shop/api/v1/serializers.py index eaacd32..7621d94 100644 --- a/shop/api/v1/serializers.py +++ b/shop/api/v1/serializers.py @@ -139,6 +139,21 @@ class CreateProductSerializer(serializers.ModelSerializer): ) +class UpdateProductSerializer(serializers.ModelSerializer): + class Meta: + model = Product + fields = ( + "id", + "name", + "description", + "stock", + "is_digital_asset", + "url", + "tags", + "images", + ) + + class ProductBatchSerializer(serializers.ModelSerializer): class Meta: model = ProductBatch diff --git a/shop/api/v1/viewsets.py b/shop/api/v1/viewsets.py index 86b7fed..d7ad35e 100644 --- a/shop/api/v1/viewsets.py +++ b/shop/api/v1/viewsets.py @@ -21,7 +21,7 @@ from shop.api.v1.serializers import ( CreateProductSerializer, CreateProductPriceSerializer, TagSerializer, - ListProductSerializer, + ListProductSerializer, UpdateProductSerializer, ) from shop.models import ( Product, @@ -40,7 +40,7 @@ from shop.api.v1.permissions import ProductPermissions, ProductPricePermissions class ProductViewSet(ModelViewSet): serializer_class = ProductSerializer - queryset = Product.objects.prefetch_related("prices").all() + queryset = Product.objects.prefetch_related("prices").prefetch_related("tags").prefetch_related("images").all() permission_classes = ( IsAdminUser, ProductPermissions, @@ -52,6 +52,8 @@ class ProductViewSet(ModelViewSet): return CreateProductSerializer elif self.action == "list": return ListProductSerializer + elif self.action in ('update', 'partial_update'): + return UpdateProductSerializer return self.serializer_class def perform_destroy(self, instance):