parent
e275862948
commit
c7b54fb2d5
8 changed files with 93 additions and 7 deletions
@ -0,0 +1,14 @@ |
|||||||
|
from rest_framework import generics |
||||||
|
|
||||||
|
from apps.goods.models import Goods |
||||||
|
from apps.goods.serializers import GoodsSerializers |
||||||
|
|
||||||
|
|
||||||
|
class GoodsGenerics(generics.ListCreateAPIView): |
||||||
|
queryset = Goods.objects.all() |
||||||
|
serializer_class = GoodsSerializers |
||||||
|
|
||||||
|
|
||||||
|
class GoodsDetailGenerics(generics.RetrieveUpdateDestroyAPIView): |
||||||
|
queryset = Goods.objects.all() |
||||||
|
serializer_class = GoodsSerializers |
@ -0,0 +1,29 @@ |
|||||||
|
from rest_framework import viewsets |
||||||
|
from rest_framework import mixins |
||||||
|
from django_filters.rest_framework import DjangoFilterBackend |
||||||
|
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 |
||||||
|
|
||||||
|
|
||||||
|
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') |
@ -0,0 +1,13 @@ |
|||||||
|
import django_filters |
||||||
|
from django_filters import rest_framework as filters |
||||||
|
from apps.goods.models import Goods |
||||||
|
|
||||||
|
|
||||||
|
class MyFilter(filters.FilterSet): |
||||||
|
name = filters.CharFilter(field_name='name', lookup_expr='icontains') |
||||||
|
max_price = filters.NumberFilter(field_name='price', lookup_expr='lte', label='最高价格') |
||||||
|
min_price = filters.NumberFilter(field_name='price', lookup_expr='gte', label='最低价格') |
||||||
|
|
||||||
|
class Meta: |
||||||
|
model = Goods |
||||||
|
fields = ('name', 'max_price', 'min_price') |
@ -0,0 +1,8 @@ |
|||||||
|
from rest_framework.pagination import PageNumberPagination |
||||||
|
|
||||||
|
|
||||||
|
class MyPagination(PageNumberPagination): |
||||||
|
page_size = 2 |
||||||
|
max_page_size = 5 |
||||||
|
page_size_query_param = 'size' |
||||||
|
page_query_param = 'page' |
Binary file not shown.
Loading…
Reference in new issue