https://www.django-rest-framework.org/api-guide/fields/
https://www.django-rest-framework.org/api-guide/relations/
第一步:
新建:C:\Users\huang\PycharmProjects\MxShop\apps\trade\serializers.py
from rest_framework import serializers
from goods.models import Goods
from .models import ShoppingCart
class ShopCartSerializer(serializers.Serializer):
user = serializers.HiddenField(
default=serializers.CurrentUserDefault()
)
nums = serializers.IntegerField(required=True, min_value=1,
error_messages={
"min_value": "商品数量不能小于1",
"required": "请选择购买数量"
})
goods = serializers.PrimaryKeyRelatedField(required=True, queryset=Goods.objects.all())
def create(self, validated_data):
user = self.context["request"].user
nums = validated_data["nums"]
goods = validated_data["goods"]
existed = ShoppingCart.objects.filter(user=user, goods=goods)
if existed:
existed = existed[0]
existed.nums += nums
existed.save()
else:
existed = ShoppingCart.objects.create(**validated_data)
return existed
第二步:
C:\Users\huang\PycharmProjects\MxShop\apps\trade\views.py
from rest_framework import viewsets
from rest_framework.permissions import IsAuthenticated
from rest_framework_jwt.authentication import JSONWebTokenAuthentication
from rest_framework.authentication import SessionAuthentication
from .serializers import ShopCartSerializer
from utils.permissions import IsOwnerOrReadOnly
from .models import ShoppingCart
class ShoppingCartViewset(viewsets.ModelViewSet):
"""
购物车功能
list:
获取购物车详情
create:
加入购物车
delete:
删除购物记录
"""
permission_classes = (IsAuthenticated, IsOwnerOrReadOnly)
authentication_classes = (JSONWebTokenAuthentication, SessionAuthentication)
serializer_class = ShopCartSerializer
queryset = ShoppingCart.objects.all()
第三步:
# 购物车
router.register(r'shopcarts', ShoppingCartViewset, base_name="shopcarts")