亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

需求

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

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

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

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%';

轉換為模型類篩選:

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)做了轉義處理。

后來也并沒有查到如何實現(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")

對應sql

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

其中的BINARY是 精確大小寫

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

總結

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

相關文章

  • python 字典套字典或列表的示例

    python 字典套字典或列表的示例

    今天小編就為大家分享一篇python 字典套字典或列表的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • 淺析Python中的絕對導入與相對導入

    淺析Python中的絕對導入與相對導入

    這篇文章主要為大家詳細介紹了Python中的絕對導入與相對導入的相關知識,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2025-03-03
  • 一文帶你了解Python中的延遲綁定

    一文帶你了解Python中的延遲綁定

    Python中的延遲綁定是指在嵌套函數(shù)中,內部函數(shù)在被調用時才會綁定外部函數(shù)的變量,而不是在定義內部函數(shù)時就綁定。本文將通過一些例子帶大家深入了解Python中的延遲綁定,感興趣的可以了解一下
    2023-05-05
  • Python可視化Tkinter進階grid布局詳情

    Python可視化Tkinter進階grid布局詳情

    這篇文章主要介紹了Python可視化Tkinter進階grid布局詳情,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07
  • Python如何使用paramiko模塊連接linux

    Python如何使用paramiko模塊連接linux

    這篇文章主要介紹了Python如何使用paramiko模塊連接linux,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • 解決Pycharm下面出現(xiàn)No R interpreter defined的問題

    解決Pycharm下面出現(xiàn)No R interpreter defined的問題

    今天小編就為大家分享一篇解決Pycharm下面出現(xiàn)No R interpreter defined的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • python 如何在測試中使用 Mock

    python 如何在測試中使用 Mock

    這篇文章主要介紹了python 如何在測試中使用 Mock,幫助大家更好的理解和學習使用python,感興趣的朋友可以了解下
    2021-03-03
  • Django中間件整合Vue攔截器的使用

    Django中間件整合Vue攔截器的使用

    本文主要介紹了Django中間件整合Vue攔截器的使用,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Python+OpenAI?Whisper實現(xiàn)視頻生成字幕

    Python+OpenAI?Whisper實現(xiàn)視頻生成字幕

    這篇文章主要為大家詳細介紹了如何利用Python和OpenAI?Whisper實現(xiàn)視頻生成字幕功能,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下
    2024-11-11
  • 使用Python實現(xiàn)一鍵往Word文檔的表格中填寫數(shù)據(jù)

    使用Python實現(xiàn)一鍵往Word文檔的表格中填寫數(shù)據(jù)

    在工作中,我們經(jīng)常遇到將Excel表中的部分信息填寫到Word文檔的對應表格中,以生成報告,方便打印,所以本文小編就給大家介紹了如何使用Python實現(xiàn)一鍵往Word文檔的表格中填寫數(shù)據(jù),文中有詳細的代碼示例供大家參考,需要的朋友可以參考下
    2023-12-12

最新評論