天天看點

規格表管理之删除規格表資料

删除規格表資料

接口分析

請求方式: Delte 

/meiduo_admin/goods/specs/(?P<pk>\d+)/

# -------規格路由表--------
    url(r'goods/simple/$',specs.SpecsView.as_view({'get':'simple'})),
           
#  規格表路由*****************************
router = DefaultRouter()
router.register('goods/specs',specs.SpecsView, base_name='specs')
print(router.urls)
urlpatterns += router.urls
           

請求參數: 通過請求頭傳遞jwt token資料。

在路徑中攜帶删除的規格的id值

傳回資料: JSON

傳回空

後端實作

# SpecsView繼承的是ModelViewSet 是以删除邏輯還是使用同一個類視圖
class SpecsView(ModelViewSet):
        """
            規格表視圖
        """
    serializer_class =SPUSpecificationSerializer
    queryset = SPUSpecification.objects.all()
    pagination_class = PageNum
           

為了拿到/meiduo_admin/goods/simple/接口中的資料,還需要添加方法:

class SpecsView(ModelViewSet):
    """商品規格的增删改查"""
    #  指定序列化器
    serializer_class = SPUSpecificationSerializer
    #  指定查詢集
    queryset = SPUSpecification.objects.all()
    #  指定分頁器
    pagination_class = UserPageNum

    def simple(self, request):
        spus = SPU.objects.all()
        ser = SPUSerializer(spus, many=True)
        return Response(ser.data)
           

序列化器:

from rest_framework import serializers
from goods.models import SPUSpecification
from goods.models import SPU



class SPUSerializer(serializers.ModelSerializer):
    """SPU序列化器"""
    class Meta:
        model = SPU
        fields = ('id', 'name')
           

注意:

此處通過檢視繼承的父類方法發現,這兒的删除屬于實體删除,如果想要邏輯删除,可以修改父類的方法。

規格表管理之删除規格表資料
規格表管理之删除規格表資料

 修改删除方法的示例代碼:

class SpecsView(ModelViewSet):
    """商品規格的增删改查"""
    #  指定序列化器
    serializer_class = SPUSpecificationSerializer
    #  指定查詢集
    queryset = SPUSpecification.objects.all()
    #  指定分頁器
    pagination_class = UserPageNum

    def simple(self, request):
        spus = SPU.objects.all()
        ser = SPUSerializer(spus, many=True)
        return Response(ser.data)

    def destroy(self, request, *args, **kwargs):
        spec = self.get_object()
        spec.is_delete = True  # 前提是資料庫中有這個is_delete字段
        spec.save