comfy/wagtail_store/store/serializers.py

52 wiersze
1.3 KiB
Python

from rest_framework import serializers
from store.models import (
Product,
ProductAuthor
)
class TagSerializer(serializers.Serializer):
name = serializers.CharField()
slug = serializers.CharField()
class ProductSerializer(serializers.ModelSerializer):
class Meta:
model = Product
fields = ["title", "description", "price", "available", "tags"]
tags = TagSerializer(many=True)
class CartProductSerializer(serializers.Serializer):
product = ProductSerializer()
quantity = serializers.IntegerField()
class ProductAuthorSerializer(serializers.Serializer):
class Meta:
model = ProductAuthor
fields = ["display_name"]
class CartSerializer(serializers.Serializer):
author = ProductAuthorSerializer()
products = CartProductSerializer(many=True)
class CartProductAddSerializer(serializers.Serializer):
product_id = serializers.IntegerField()
quantity = serializers.IntegerField()
def validate_product_id(self, value):
try:
Product.objects.get(id=value)
except Product.DoesNotExist:
raise serializers.ValidationError("Unable to add not existing product")
return value
def save(self, cart):
cart.add_item(self.validated_data["product_id"], self.validated_data["quantity"])