Django--ORM篩選條件

https://www.cnblogs.com/williama/p/16282254.html

雙下劃線篩選條件過濾

  • __gt 大于
  • __lt 小于
  • __gte 大于等于
  • __lte 小于等于
  • __range 范圍查詢(顧頭顧尾)
  • __in 是否含有
  • __contains 判斷是否包含某個字符,區(qū)分大小寫
  • __icontains 判斷是否包含某個字符,忽略大小寫
  • __year 按照年份篩選數(shù)據(jù)
  • __month 按照月份篩選數(shù)據(jù)
  • __startwith 以**開頭
  • __endswith 以**結尾
  • __regex 正則
# 查詢年齡大于20的用戶
res = models.User.objects.filter(age__gt=20)  # 等號僅作為賦值運算

# 查詢年齡在18到26之間的用戶
res = models.User.objects.filter(age__range=[18,26])  # 包含18和26

# 查詢年齡是18、22、25的用戶
res = models.User.objects.filter(age__in=[18,22,25])

# 查詢姓名中包含字母j和J的用戶
res = models.User.objects.filter(name__contains='j')

#查詢姓名中包含字母j的用戶
res = models.User.objects.filter(name__icontains='j')

# 查詢年份是22年的數(shù)據(jù)
res = models.User.objects.filter(op_time__year=2022)

# 查詢月份是5月的數(shù)據(jù)
res = models.User.objects.filter(op_time__month=5)

查詢不包含,id=1的數(shù)據(jù)

User.objects.exclude (id=1)

django.db.models  import  Q
User.objects.filter (~ Q (id=1))

解決多條件篩選查詢,通過傳遞filter條件的**kwargs參數(shù)

    def getStudentList(self, request, *args, **kwargs):
        param_grade_name = request.query_params.get('grade_name')
        param_student_name = request.query_params.get('name')

       # 定義filter的篩選條件的kwargs變量,這樣可以根據(jù)篩選條件動態(tài)擴展
        gradefilters = {
            "is_deleted": False
        }
        studentfilters = {}
        if param_grade_name:
            gradefilters['grade_name'] = param_grade_name
        if param_student_name:
            studentfilters['name'] = param_student_name

        gradeIds = Grade.objects.filter(**gradefilters).values_list('id', flat=True)
        students = StudentInfo.objects.filter(grade_id__in=gradeIds, **studentfilters).order_by("-id")

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容