欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Vue + Django 2.0.6 学习笔记 8.2 热卖商品展示

程序员文章站 2022-07-14 22:37:01
...

想要呈现热卖商品 只需要将商品model中的is_hot为True的字段过滤出来就可以了

class Goods(models.Model):
    ...
    is_hot = models.BooleanField(default=False, verbose_name=u'是否热销')
    ...

那我们就去goods下面的filters.py中添加过滤字段

import django_filters

from django.db.models import Q

from .models import Goods


class GoodsFilter(django_filters.rest_framework.FilterSet):
    """
    商品的过滤类
    """
    pricemin = django_filters.NumberFilter(field_name='shop_price', lookup_expr='gte')
    pricemax = django_filters.NumberFilter(field_name='shop_price', lookup_expr='lte')

    top_category = django_filters.NumberFilter(method='top_category_filter')

    name = django_filters.CharFilter(field_name='name')

    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
# --------------------------------------------->这里 只要添加is_hot字段就可以了 完美 搞定 拿钱
        fields = ['pricemin','pricemax', 'name', 'is_hot']

示例:

Vue + Django 2.0.6 学习笔记 8.2 热卖商品展示

URL请求:

Vue + Django 2.0.6 学习笔记 8.2 热卖商品展示

前端vue中也是请求goods的api 只是添加了is_hot:true的字段

Vue + Django 2.0.6 学习笔记 8.2 热卖商品展示

完结