最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

django rest framework使用django-filter用法

 更新時間:2020年07月15日 09:30:19   作者:子如川  
這篇文章主要介紹了django rest framework使用django-filter用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

django rest framework使用django-filter注意事項:

一定要在setting文件里面加載如下代碼,而不是只安裝包,否則django應(yīng)用不報錯,但是不能正確過濾。

“`
INSTALLED_APPS = [
‘django_filters'
]

REST_FRAMEWORK = {
‘DEFAULT_FILTER_BACKENDS': ( ‘django_filters.rest_framework.DjangoFilterBackend',
),
}

補充知識:rest_framework--filters和django-filters混合使用-過濾搜索

view

from rest_framework.pagination import PageNumberPagination
from rest_framework import mixins
from rest_framework import viewsets
from rest_framework import filters

from django_filters.rest_framework import DjangoFilterBackend

from .models import Goods
from .serializers import GoodsSerializer
# 導入過濾器類
from .filters import GoodsFilter

class GoodsPagination(PageNumberPagination):
  page_size = 10
  page_size_query_param = "page_size"
  page_query_param = "p"
  max_page_size = 100

class GoodsListViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
  # 指定queryset
  queryset = Goods.objects.all()

  # 指定序列化類
  serializer_class = GoodsSerializer

  # 指定分頁類
  pagination_class = GoodsPagination

  # 添加過濾器 這里可以吧django-filter過濾器添加進來 和 rest_framework的filters添加進來一起用, 也可以單個用, 看你的需求
  filter_backends = [DjangoFilterBackend, filters.SearchFilter]

  # 只需要簡單的基于等同的過濾,則可以filter_fields在視圖或視圖集上設(shè)置屬性,列出要過濾的字段集。
  # 等同就是根據(jù)你過濾的字段的數(shù)據(jù)必須跟數(shù)據(jù)庫里那個字段的數(shù)據(jù)相同
  # filter_fields = ['name', 'shop_price']

  # 指定過濾器類
  filter_class = GoodsFilter

  search_fields = ['name', 'goods_brief', "goods_desc"]

過濾器類–根據(jù)自己需求定義

import django_filters

from .models import Goods

class GoodsFilter(django_filters.rest_framework.FilterSet):
  """
  商品的過濾類
  """

  # 大于這個值 name指定字段 lookup_expr過濾條件
  # NumberFilter 數(shù)字類型
  price_min = django_filters.NumberFilter(name="shop_price", lookup_expr="gte")
  # 小于這個值
  price_max = django_filters.NumberFilter(name="shop_price", lookup_expr="lte")

  # name模糊查詢, 不指定過濾條件, 必須全部匹配
  # CharFilter字符串類型
  name = django_filters.CharFilter(name="name", lookup_expr="icontains")

  class Meta:
    # 指定模型類
    model = Goods
    # 顯示這兩個字段
    fields = ["price_min", "price_max", "name"]

settings

INSTALLED_APPS = [
  # drf過濾器 也 是xadmin的過濾器
  'django_filters',
  'rest_framework',
]

url

from django.conf.urls import url, include

from rest_framework.routers import DefaultRouter

from goods.views import GoodsListViewSet
# 生成一個注冊器實例對象
router = DefaultRouter()
# 將需要自動生成url的接口注冊
# 配置goods的url
router.register(r'goods', GoodsListViewSet, base_name="goods-list")

urlpatterns = [
  # 自動生成url
  url(r"^", include(router.urls)),
]

效果圖

以上這篇django rest framework使用django-filter用法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

桓台县| 海口市| 康平县| 安顺市| 关岭| 永新县| 高邑县| 玛纳斯县| 广水市| 云霄县| 潮州市| 湄潭县| 鄄城县| 江陵县| 阿城市| 和田县| 顺义区| 安顺市| 临安市| 延津县| 林州市| 买车| 若尔盖县| 浮梁县| 葫芦岛市| 虎林市| 呼伦贝尔市| 香格里拉县| 云南省| 德安县| 曲水县| 汪清县| 开封市| 沈阳市| 十堰市| 中卫市| 贺州市| 玉树县| 靖西县| 永善县| 南昌县|