1、实现分类商品列表数据的查询
<1>创建CategoryListView视图(apps/goods/views)
from rest_framework.generics import ListAPIView
from goods.models import GoodsCategory, SKU
from goods.serializers import CategoryListSerializers
class CategoryListView(ListAPIView):
"""
查询商品列表
"""
serializer_class = CategoryListSerializers
def get_queryset(self):
pk = self.kwargs["pk"]
return SKU.objects.filter(category_id = pk)
<2>注册子路由
from django.conf.urls import url
from goods import views
urlpatterns = [
url(r"^categories/(?P<pk>\d+)/skus/$", views.CategoryListView.as_view())
]
2、商品列表分页显示
<1>创建分页器(goods/utils)
from rest_framework.pagination import PageNumberPagination
class PageNum(PageNumberPagination):
page_size_query_param = "page_size"
page_size = 5
<2>修改CategoryListView视图
from rest_framework.generics import ListAPIView
from goods.models import GoodsCategory, SKU
from goods.serializers import CategoryListSerializers
from goods.utils import PageNum
class CategoryListView(ListAPIView):
"""
查询商品列表
"""
serializer_class = CategoryListSerializers
pagination_class = PageNum
def get_queryset(self):
pk = self.kwargs["pk"]
return SKU.objects.filter(category_id = pk)
3、列表数据过滤排序
<1>修改CategoryListView视图
from rest_framework.generics import ListAPIView
from goods.models import GoodsCategory, SKU
from goods.serializers import CategoryListSerializers
from goods.utils import PageNum
from rest_framework.filters import OrderingFilter
class CategoryListView(ListAPIView):
"""
查询商品列表
"""
serializer_class = CategoryListSerializers # 分页属性
pagination_class = PageNum # 分页属性
filter_backends = [OrderingFilter] # 过滤排序属性
# 指定排序字段
ordering_filter = ["sale", 'create_time', 'price']
def get_queryset(self):
pk = self.kwargs["pk"]
return SKU.objects.filter(category_id = pk)