first commit
This commit is contained in:
25
cart/serializers.py
Normal file
25
cart/serializers.py
Normal file
@@ -0,0 +1,25 @@
|
||||
from rest_framework import serializers
|
||||
from product.models import Product
|
||||
from product.serializers import ProductSerializer
|
||||
|
||||
# CartItemSerializer artık hem dict (session) hem de model instance (db) ile çalışabilmeli.
|
||||
# Serializer'lar varsayılan olarak object attribute'larına erişir.
|
||||
# Dict erişimi için source kullanabiliriz veya to_representation override edebiliriz.
|
||||
# Ancak en temizi, view tarafında veriyi standart bir yapıya (list of dicts) dönüştürüp serializer'a vermektir.
|
||||
# Cart sınıfındaki __iter__ metodu zaten bunu yapıyor (hem DB hem Session için dict döndürüyor).
|
||||
# Bu yüzden mevcut serializer yapısını koruyabiliriz.
|
||||
|
||||
class CartItemSerializer(serializers.Serializer):
|
||||
product = ProductSerializer(read_only=True)
|
||||
quantity = serializers.IntegerField()
|
||||
price = serializers.DecimalField(max_digits=10, decimal_places=2)
|
||||
total_price = serializers.DecimalField(max_digits=10, decimal_places=2)
|
||||
|
||||
class CartSerializer(serializers.Serializer):
|
||||
items = CartItemSerializer(many=True, read_only=True)
|
||||
total_price = serializers.DecimalField(max_digits=10, decimal_places=2)
|
||||
|
||||
class CartAddProductSerializer(serializers.Serializer):
|
||||
product_id = serializers.IntegerField()
|
||||
quantity = serializers.IntegerField(min_value=0, default=1)
|
||||
override_quantity = serializers.BooleanField(required=False, default=False)
|
||||
Reference in New Issue
Block a user