class
goodslistviewset
(cacheresponsemixin, mixins.listmodelmixin, mixins.retrievemodelmixin, viewsets.genericviewset)
:"""
商品列表頁, 分頁, 搜尋, 過濾, 排序
"""# throttle_classes = (userratethrottle, )
queryset = goods.objects.
all(
) serializer_class = goodsserializer
pagination_class = goodspagination
# authentication_classes = (tokenauthentication, )
filter_backends =
(djangofilterbackend, filters.searchfilter, filters.orderingfilter)
filter_class = goodsfilter
search_fields =
('name'
,'goods_brief'
,'goods_desc'
) ordering_fields =
('sold_num'
,'shop_price'
)
class
goodsimageserializer
(serializers.modelserializer)
:class
meta
: model = goodsimage
fields =
("image",)
class
goodsserializer
(serializers.modelserializer)
: category = categoryserializer(
) images = goodsimageserializer(many=
true
)class
meta
: model = goods
fields =
"__all__"
只需要加乙個熱賣的過濾器就可以了,在filter中加乙個「is_hot」
class
goodsfilter
(django_filters.rest_framework.filterset)
:"""
商品的過濾類
"""pricemin = django_filters.numberfilter(field_name=
'shop_price'
, help_text=
"最低**"
,lookup_expr=
'gte'
) pricemax = django_filters.numberfilter(field_name=
'shop_price'
, lookup_expr=
'lte'
) top_category = django_filters.numberfilter(method=
'top_category_filter'
, field_name=
'category_id'
, lookup_expr=
'=')
# 自定義過濾,過濾某個一級分類
#過濾邏輯
#類別為1or2or3
deftop_category_filter
(self, queryset, name, value)
: queryset = queryset.
filter
(q(category_id=value)
| q(category__parent_category_id=value)
| q(category__parent_category__parent_category_id=value)
)return queryset
class
meta
: model = goods
fields =
['pricemin'
,'pricemax'
,'is_hot'
,'is_new'
]
lvs之ip tun ip隧道 技術的學習與實踐
1.配置測試環境 修改ip windows 200.168.10.4 lvs server ip 200.168.10.1 因為ip隧道模式只需要乙個網絡卡 所以就停掉其他網絡卡 web server1 ip 200.168.10.2 ip隧道模式實際中使用的都是公網ip 所以不需要閘道器 刪除預設...
DRF學習之第三方登入的實現(十六)
social django 增加微博與qq的backends authentication backends users.views.custombackend social core.backends.weibo.weibooauth2 social core.backends.qq.qqoaut...
Android開發學習之鬧鐘功能的簡單實現
alarm就是我們通常說的鬧鐘,其實,在android中實現乙個簡單的鬧鐘功能並不是很難,原理就是在特定的事件廣播乙個intent,然後系統收到這個廣播以後,做出乙個反應 receive 在android中提供了四種型別的鬧鐘,分別是elapsed realtime 在指定的延時後廣播通知,不喚醒裝...