You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

47 lines
1.6 KiB

from rest_framework import viewsets
from rest_framework import mixins
from django_filters.rest_framework import DjangoFilterBackend
from django_filters import rest_framework
from rest_framework import filters
from apps.goods.models import Goods
from apps.goods.serializers import GoodsSerializers
from common.mypagination import MyPagination
from common.myfilter import MyFilter
from common.mymodelviewset import MyModelViewSet
class GoodsViewSet(mixins.ListModelMixin,
mixins.RetrieveModelMixin,
mixins.CreateModelMixin,
mixins.UpdateModelMixin,
mixins.DestroyModelMixin,
viewsets.GenericViewSet):
queryset = Goods.objects.all()
serializer_class = GoodsSerializers
# 分页
# pagination_class = MyPagination #针对viewset的分页设置,也可以走全局
# 筛选
filter_backends = (DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter)
# filter_backends = (DjangoFilterBackend,)
filterset_class = MyFilter
# 搜索
search_fields = ('name', 'price')
# 排序
ordering_fields = ('id', 'name', 'price')
class GoodsDetailViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Goods.objects.all()
serializer_class = GoodsSerializers
class GoodsViewSetCustom(MyModelViewSet, viewsets.GenericViewSet):
queryset = Goods.objects.all()
serializer_class = GoodsSerializers
pagination_class = MyPagination
filter_backends = (DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter)
filterset_class = MyFilter
search_fields = ('name', 'price')
ordering_fields = ('id', 'name', 'price')