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

django orm模糊查詢、正則匹配多個值方式

 更新時間:2023年08月12日 15:36:08   作者:_ blank  
這篇文章主要介紹了django orm模糊查詢、正則匹配多個值方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

django orm模糊查詢、正則匹配多個值

需求

用戶列表以年齡段作為篩選條件過濾數(shù)據(jù),即篩選0-18歲的用戶、18-20歲的用戶…

easy, 這不分分鐘的事,可事情并沒有那么簡單

表里并沒有用戶的年齡信息,也沒有出生日期信息,唯一相關(guān)的是身份證

class User(models.Model):
  name = models.CharField()
  id_number = models.CharField()

like模糊匹配

想到可以通過 查詢時的年份 - 篩選年齡 得到 出生年份的區(qū)間 ,sql中l(wèi)ike是可以精確匹配出生年份的:

select * from user where id_number like '______1996%';

轉(zhuǎn)換為模型類篩選:

def get(self, request):
    age_list = self.get_birth_year(0, 18)
    query = reduce(operator.or_, (Q(id_number__contains=x) for x in age_list))
    users = User.objects.filter(query)
def get_birth_year(self, age_start, age_end):
    now_year = datetime.datetime.now().year
    start_year = now_year - age_end
    end_year = now_year - age_start
    return [r'______{}%'.format(i) for i in range(start_year, end_year)]

But 平常使用 contains 時并不需要加 % ,上邊那樣寫是有問題的。

后來查了文檔,發(fā)現(xiàn)做了轉(zhuǎn)義處理。

后來也并沒有查到如何實現(xiàn)like下劃線匹配位數(shù)

image-20210414145541928

正則匹配

def get(self, request):
    age_list = self.get_birth_year(0, 18)
    query = reduce(operator.or_, (Q(id_number__regex=x) for x in age_list))
    users = User.objects.filter(query)
def get_birth_year(self, age_start, age_end):
    now_year = datetime.datetime.now().year
    start_year = now_year - age_end
    end_year = now_year - age_start
    return [r'^[0-9]{0}{1}[0-9xX]+$'.format('{6}', i) for i in range(start_year, end_year)]
# '^[0-9]{0}{1}[0-9xX]+$'.format('{6}', i)   正則里的{位數(shù)}和format用法有些沖突,不知道是不是有更好的寫法

django ORM模糊查詢 contains和Icontains區(qū)別

django filter中用contains和icontains區(qū)別

qs.filter(name__contains="e")
qs.filter(name__icontains="e")

對應(yīng)sql

'contains': 'LIKE BINARY %s',
'icontains': 'LIKE %s',

其中的BINARY是 精確大小寫

  • 其中的BINARY是 精確大小寫
  • 而’icontains’中的’i’表示忽略大小寫

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 利用python實現(xiàn)可視化大屏

    利用python實現(xiàn)可視化大屏

    這篇文章主要介紹了利用python實現(xiàn)可視化大屏,文章圍繞主題展開對如何利用python實現(xiàn)可視化大屏,需要的小伙伴可以參考一下,希望對你的學(xué)習(xí)和工作有所幫助
    2022-03-03
  • Python多線程與異步處理在HTTP請求中的應(yīng)用方式

    Python多線程與異步處理在HTTP請求中的應(yīng)用方式

    這篇文章主要介紹了Python多線程與異步處理在HTTP請求中的應(yīng)用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Python中subprocess介紹及如何使用詳細(xì)講解

    Python中subprocess介紹及如何使用詳細(xì)講解

    在實際開發(fā)過程中,我們經(jīng)常會遇到需要從Python腳本中調(diào)用外部程序或腳本的場景,下面這篇文章主要給大家介紹了關(guān)于Python中subprocess介紹及如何使用詳細(xì)講解的相關(guān)資料,需要的朋友可以參考下
    2024-09-09
  • python小白學(xué)習(xí)包管理器pip安裝

    python小白學(xué)習(xí)包管理器pip安裝

    在本篇文章里小編給大家分享的是一篇python包管理器pip安裝的相關(guān)知識點內(nèi)容,有興趣的朋友們參考下。
    2020-06-06
  • python EasyOCR庫實例用法介紹

    python EasyOCR庫實例用法介紹

    在本篇文章里小編給大家整理的是一篇關(guān)于python EasyOCR庫實例用法介紹,有需要的朋友們可以跟著學(xué)習(xí)下。
    2021-07-07
  • Python腳本啟動應(yīng)用并輸入賬號或密碼的操作命令

    Python腳本啟動應(yīng)用并輸入賬號或密碼的操作命令

    這篇文章主要介紹了Python腳本啟動應(yīng)用并輸入賬號或密碼,安裝所需要的模塊pyautogui、subprocess、psutil等,可以通過pip安裝,下面以安裝pyautogui為例cmd命令行中輸入,需要的朋友可以參考下
    2024-05-05
  • python使用mediapiple+opencv識別視頻人臉的實現(xiàn)

    python使用mediapiple+opencv識別視頻人臉的實現(xiàn)

    本文主要介紹了python使用mediapiple+opencv識別視頻人臉,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • python制作簡單五子棋游戲

    python制作簡單五子棋游戲

    這篇文章主要為大家詳細(xì)介紹了python制作簡單五子棋游戲,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • pytorch torchvision.ImageFolder的用法介紹

    pytorch torchvision.ImageFolder的用法介紹

    今天小編就為大家分享一篇pytorch torchvision.ImageFolder的用法介紹,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • python實現(xiàn)爬取千萬淘寶商品的方法

    python實現(xiàn)爬取千萬淘寶商品的方法

    這篇文章主要介紹了python實現(xiàn)爬取千萬淘寶商品的方法,涉及Python頁面抓取的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06

最新評論

遂平县| 达拉特旗| 安康市| 福州市| 衡东县| 惠东县| 永兴县| 伊宁县| 崇文区| 鄂温| 安庆市| 海晏县| 莱州市| 会昌县| 桐城市| 潮州市| 靖江市| 两当县| 乌拉特中旗| 长岛县| 班玛县| 三门县| 磐安县| 同江市| 政和县| 西乡县| 广丰县| 府谷县| 北碚区| 德保县| 潢川县| 陇南市| 周口市| 奉新县| 肥西县| 杭州市| 南皮县| 盐山县| 丰台区| 五常市| 宜章县|