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.
52 lines
1.9 KiB
52 lines
1.9 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 rest_framework_extensions.cache.mixins import CacheResponseMixin |
|
|
|
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 |
|
|
|
from rest_framework import permissions |
|
from rest_framework.authentication import TokenAuthentication |
|
# from common |
|
|
|
|
|
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') |
|
permission_classes = (permissions.IsAuthenticated,) |
|
|
|
|
|
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')
|
|
|