django filters實現搜尋

2022-02-06 08:27:41 字數 1810 閱讀 2072

定義model

# models.py

class

product(models.model):

name = models.charfield(max_length=255)

author = models.charfield(max_length=255)

price =models.decimalfield()

description =models.textfield()

定義filter

#

filters.py

import

django_filters

class

productfilter(django_filters.filterset):

name = django_filters.charfilter(lookup_expr='

iexact

') #

iexact表示精確匹配, 並且忽略大小寫

author = django_filters.charfilter(lookup_expr='

icontains

') #

icontains表示模糊查詢(包含),並且忽略大小寫

price = django_filters.numberfilter(look_expr='

exact

') #

exact表示精確匹配

desc = django_filters.charfilter('

description

', lookup_expr='

contains

') #對'description'字段進行操作,不填預設為desc

#price__lte = django_filters.numberfilter('price', lookup_expr='lte') #lte表示小於

#price__gte = django_filters.numberfilter('price', look_expr='gte') # gte表示大於

class

meta:

model =product

fields = ['

name

', '

author

', '

price

', '

description']

#fields =

views中使用

class

productviewsets(mixins.listmodelmixin,

mixins.retrievemodelmixin,

mixins.updatemodelmixin,

mixins.destroymodelmixin,

mixins.createmodelmixin,

viewsets.genericviewset):

queryset =product.objects.all()

serializer_class =productserializer

filter_backends = (djangofilterbackend,)

filter_class =productfilter

search_fields = ('

name

', 'description') # 模糊搜尋的字段

ordering_fields = ('

price

',) # 排序的字段

快速排序演算法實現(遞迴實現 棧實現)

基本思想 選擇乙個基準元素,比如選擇最後乙個元素,通過一趟掃瞄,將待排序列分成兩部分,一部分比基準元素小,一部分大於等於基準元素,此時基準元素在其排好序後的正確位置,又稱為軸位置,此位置的元素確定後不再參與排序,然後再用同樣的方法遞迴地排序劃分的兩部分。分析 快速排序是不穩定的排序。快速排序的時間複...

介面實現與配置實現

在實現系統功能的時候,通常會首先定義好功能的介面,在系統功能不斷被實現的過程中,慢慢的發現有些介面的實現很類似,這個時候通常會開始做一次抽象,形 成乙個共同的部分,慢慢的系統形成了乙個抽象的層次,而為了通用,通常是通過定義介面,形成乙個抽象類,抽象類中暴露出一些抽象方法供外部擴充套件實 現,逐步的積...

js分頁實現,前端實現。

主要是借鑑了網上乙個例子,自己重新加了樣式,新增了跳轉,修改了一些小地方,用於和大家一起分享,前端分頁的技巧,的資料是我已經寫好了,其實大家也可以前端渲染 然後再分頁,都是可以的。其實分頁最關鍵是這兩句 var startrow currentpage 1 pagesize 1 currentpag...