规格表管理
在规格表中我们需要对规格表数据进行增删改查操作,这时候我们可以借助于视图集中的ModelViewset来完成相应的操作
请求方式: GET /meiduo_admin/goods/specs/
from .views import skus, specs
from rest_framework.routers import DefaultRouter
# 规格表路由*****************************
router = DefaultRouter()
router.register('goods/specs', specs.SpecsView, base_name='specs')
print(router.urls)
urlpatterns += router.urls
【这儿使用自动生成路由的方式,序列化器中会自动生成路由,然后再添加到路由列表中】
【会进行生成后面这么多的路由[, , , , , ]】
请求参数: 通过请求头传递jwt token数据。
返回数据: JSON
{
"counts": "SPU商品规格总数量",
"lists": [
{
"id": "规格id",
"name": "规格名称",
"spu": "SPU商品名称",
"spu_id": "SPU商品id"
},
...
],
"page": "页码",
"pages": "总页数",
"pagesize": "页容量"
}
返回值类型是否必须说明countint是总量lists数组是规格表信息pageint是页码pagesint是总页数pagesizeint是页容量
后端实现
from rest_framework.viewsets import ModelViewSet
from goods.models import SPUSpecification
from meiduo_admin.serializers.specs import SPUSpecificationSerializer
from meiduo_admin.utils import UserPageNum
class SpecsView(ModelViewSet):
"""商品规格的增删改查"""
# 指定序列化器
serializer_class = SPUSpecificationSerializer
# 指定查询集
queryset = SPUSpecification.objects.all()
# 指定分页器
pagination_class = UserPageNum
序列化器的定义
from rest_framework import serializers
from goods.models import SPUSpecification
class SPUSpecificationSerializer(serializers.ModelSerializer):
# 关联嵌套返回spu表的商品名
spu = serializers.StringRelatedField(read_only=True)
# 返回关联spu的id值
spu_id = serializers.IntegerField()
class Meta:
model = SPUSpecification # 商品规格表关联了spu表的外键spu
fields = '__all__'
运行结果:
注意事项(外键关联问题):
如果把外键关联注释掉,会拿不到外键的数据