“Vue展示商品列表页数据-2”的版本间的差异
来自CloudWiki
第61行: | 第61行: | ||
fields = ['pricemin', 'pricemax','name'] | fields = ['pricemin', 'pricemax','name'] | ||
</nowiki> | </nowiki> | ||
+ | |||
+ | [[文件:bd20-6-30.png|600px]] |
2020年8月17日 (一) 06:50的版本
问题
现在商品列表页可以导出商品了,但是有一个问题
就是导出的商品品名所有品类都一样,没有过滤。
如图:
对类别的过滤
我们需要在后台 对类别进行过滤
后台商品列表的view是GoodsListViewSet
apps/goods/views.py:
class GoodsListViewSet(mixins.ListModelMixin, viewsets.GenericViewSet): """ 商品列表页, 分页, 搜索, 过滤, 排序 """ queryset = Goods.objects.all() serializer_class = GoodsSerializer pagination_class = GoodsPagination filter_backends = (DjangoFilterBackend,filters.SearchFilter, filters.OrderingFilter) filter_class = GoodsFilter search_fields = ('name', 'goods_brief', 'goods_desc') ordering_fields = ('sold_num', 'shop_price')
在其中调用了GoodsFilter:
filter.py: 中改动一下,增加对类别的过滤:top_category
# -*- coding: utf-8 -*- __author__ = 'bobby' import django_filters from django.db.models import Q from django.db.models import Q from .models import Goods class GoodsFilter(django_filters.rest_framework.FilterSet): """ 商品的过滤类 """ pricemin = django_filters.NumberFilter(name='shop_price', help_text="最低价格",lookup_expr='gte') pricemax = django_filters.NumberFilter(name='shop_price', lookup_expr='lte') #name = django_filters.CharFilter(name='name', lookup_expr='icontains') top_category = django_filters.NumberFilter(method='top_category_filter') def top_category_filter(self, queryset, name, value): return queryset.filter(Q(category_id=value)|Q(category__parent_category_id=value)|Q(category__parent_category__parent_category_id=value)) class Meta: model = Goods fields = ['pricemin', 'pricemax','name']