后台管理 - 商品管理之规格管理

1, spu规格表管理

  • 目的: 可以编写视图,获取spu的规格

  • 操作流程:

    • 1, 子路由(meiduo_admin/urls.py)

      • #5,spu spec管理
        router = DefaultRouter()
        router.register(r'goods/specs',spu_specs_views.SPUSpecsViewSet,base_name="specs")
        urlpatterns += router.urls
        
    • 2,类视图(good/spu_specs_views.py)

      • #1,spu specs管理
        class SPUSpecsViewSet(ModelViewSet):
            pagination_class = MyPageNumberPagination
            serializer_class = spu_specs_serializers.SPUSpecsSerializer
            queryset = SPUSpecification.objects.all()
        
    • 3,序列化器(good/spu_specs_serializsers.py)

      • #1,spu specs序列化器
        class SPUSpecsSerializer(serializers.ModelSerializer):
        
            #1,重写spu
            spu = serializers.StringRelatedField(read_only=True)
            spu_id = serializers.IntegerField()
        
            class Meta:
                model = SPUSpecification
                fields = "__all__"
        

2,规格表管理增删,删除,修改

  • 注意点: 由于规格管理使用的是视图集,所有功能都实现了

3,spu规格选项信息获取

  • 目的: 可以编写类视图,获取规格选项信息

  • 操作流程:

    • 1, 子路由(meiduo_admin/urls.py)

      • #6,spec option管理
        router = DefaultRouter()
        router.register(r'specs/options',specs_options_views.SpecsOptionViewSet,base_name="options")
        urlpatterns += router.urls
        
    • 2,类视图(good/specs_options_views.py)

      • #1,spec option管理
        class SpecsOptionViewSet(ModelViewSet):
            pagination_class = MyPageNumberPagination
            serializer_class = specs_options_serializers.SpecsOptionSerializer
            queryset = SpecificationOption.objects.all()
        
    • 3,序列化器(good/specs_options_serializsers.py)

      • #1,spec option 序列化器
        class SpecsOptionSerializer(serializers.ModelSerializer):
        
            #1,重写spec
            spec = serializers.StringRelatedField(read_only=True)
            spec_id = serializers.IntegerField()
        
            class Meta:
                model = SpecificationOption
                fields = "__all__"
        

4,spu规格信息获取

  • 目的: 可以在添加选项的时候获取所对应的的规格信息

  • 操作流程:

    • 1, 子路由(meiduo_admin/urls.py)

      • #6,spec option路由
            url(r'^goods/specs/simple/$',specs_options_views.SpecSimpleView.as_view())
        
    • 2,类视图(good/specs_options_views.py)

      • 
        #2,spec 信息获取
        class SpecSimpleView(ListAPIView):
            serializer_class = specs_options_serializers.SpecSimpleSerializer
            # queryset = SPUSpecification.objects.all()
        
            #1,重写get_queryset方法,目的在前端显示数据的时候,方便查看
            def get_queryset(self):
                #1,获取数据源
                queryset = SPUSpecification.objects.all()
        
                #2,给数据源name增加spu.name
                for spec in queryset:
                    spec.name = "%s - %s"%(spec.spu.name,spec.name)
        
                #3,返回数据源
                return queryset
        
    • 3,序列化器(good/specs_options_serializsers.py)

      • #2,spec规格信息
        class SpecSimpleSerializer(serializers.ModelSerializer):
            class Meta:
                model = SPUSpecification
                fields = ("id","name")
        

5,spu规格选项添加,修改,删除

  • 注意点: 由于规格选项使用视图集实现,所以增,删,改全部实现
上一篇:CocoaPods 升级新版本问题


下一篇:GitBook 入门学习