Django4.0的快速查詢以及分頁

1.?filter?方法

filter?是 Django ORM 中最常用的查詢方法之一。它用來根據給定的條件過濾查詢集并返回滿足條件的對象。

articles = Article.objects.all()
# 使用 SearchFilter 進行搜索
search_param = request.query_params.get('search', None)
author_id = request.query_params.get('author_id', None)
# 模糊搜索
if search_param:articles = articles.filter(title__icontains=search_param)
#精確搜索id
if author_id:rticles = articles.filter(author_id=author_id)  # 按作者 ID 精確搜索

如果你有多個條件,也可以使用?filter?進行連接:

articles = Article.objects.filter(title__icontains='Django', content__icontains='Python'
)

這會返回標題包含 "Django" 且內容包含 "Python" 的所有文章。

特點:
  • filter?會返回滿足所有給定條件的結果。它相當于執行 SQL 查詢中的?WHERE?子句。
  • 它會隱式使用?AND?邏輯來連接多個條件。

2.?Q?對象

Q?對象是 Django 中用于創建復雜查詢條件的工具。它允許你在查詢中使用?OR?或?AND?邏輯,甚至可以動態地構建查詢條件。Q?對象特別適用于需要使用?OR?邏輯或條件組合的場景。

from django.db.models import Qarticles = Article.objects.filter(Q(title__icontains='Django') | Q(description__icontains='Django') | Q(content__icontains='Django')
)
使用場景:
  • Q?適用于復雜查詢,尤其是在需要使用?OR?或動態組合查詢條件時。
  • 使用?Q?對象可以靈活地組合不同的查詢條件,可以使用?&?表示?AND?邏輯,使用?|?表示?OR?邏輯。
  • filter?用于常見的、簡單的過濾條件,適用于大部分常規查詢,默認使用?AND?邏輯。
  • Q?對象用于構建更復雜的查詢,特別是當你需要靈活的?OR?邏輯或者動態生成查詢時。
 articles = Article.objects.all()# 使用 SearchFilter 進行搜索search_param = request.query_params.get('search', None)author_id = request.query_params.get('author_id', None)# # 模糊搜索# if search_param:#     articles = articles.filter(title__icontains=search_param)# #精確搜索id# if author_id:#     articles = articles.filter(author_id=author_id)  # 按作者 ID 精確搜索# 使用 Q 對象進行復雜查詢query = Q()if search_param:query &= (Q(title__icontains=search_param) | Q(content__icontains=search_param))if author_id:query &= Q(author_id=author_id)# 應用查詢條件articles = articles.filter(query)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/74840.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/74840.shtml
英文地址,請注明出處:http://en.pswp.cn/web/74840.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

在Vue3中格式化后端返回的Java Date類型數據為指定格式

在前端Vue3項目中&#xff0c;格式化后端返回的java.util.Date類型時間到yyyy-MM-dd HH:mm:ss格式&#xff0c;有幾種常用方法&#xff1a; 方法一&#xff1a;使用JavaScript內置方法 <JAVASCRIPT> // 假設后端返回的數據結構為 { createTime: 2023-05-15T08:30:00.0…

單元測試原則之——不要模擬不屬于你的類型

在單元測試中,不要模擬不屬于你的類型(Don’t mock types you don’t own)是一個重要的原則。這是因為外部庫或框架的類型(如第三方依賴)可能會在未來的版本中發生變化,而你的模擬可能無法反映這些變化,從而導致測試失效。 以下是一個基于Java Mockito 的示例,展示如何…

內網滲透(雜項集合) --- 中的多協議與漏洞利用技術(雜項知識點 重點) 持續更新

目錄 1. NetBIOS 名稱的網絡協議在局域網中內網滲透中起到什么作用 2. 使用 UDP 端口耗盡技術強制所有 DNS 查找失敗&#xff0c;這個技術如何應用在局域網內網滲透測試中 3. 在本地創建一個 HTTP 服務來偽造 WPAD 服務器 什么是 WPAD 服務器&#xff1f;這個服務器是干嘛的…

Git相關筆記1 - 本地文件上傳遠程倉庫

Git相關筆記 目錄 Git相關筆記Git上傳相關文件第一步創建一個倉庫&#xff1a;第二步本地創建空文件夾&#xff1a;第三步開始在gitbush上傳文件&#xff1a;解決外網網絡連接的問題&#xff1a;中文文件的編碼問題&#xff1a;參考資料 Git上傳相關文件 第一步創建一個倉庫&a…

Cocos Creator 進行 Web 發布后,目錄結構解析

在使用 Cocos Creator 進行 Web 發布后&#xff0c;生成的目錄結構通常包含以下內容&#xff0c;下面為你詳細介紹&#xff1a; 1. index.html 這是 Web 項目的入口 HTML 文件&#xff0c;它會加載所需的 JavaScript 文件和資源&#xff0c;從而啟動游戲或應用程序。示例代碼…

C++20的協程簡介

C20 引入了協程&#xff08;Coroutines&#xff09;&#xff0c;這是一種特殊的函數&#xff0c;它可以暫停執行并在之后恢復&#xff0c;而不是像普通函數那樣一旦返回就終止。協程的主要特點在于它能保留自身的執行狀態&#xff0c;這讓異步編程更加簡潔和直觀。以下是對 C20…

通過ansible+docker-compose快速安裝一主兩從redis+三sentinel

目錄 示例主機列表 架構參考 文件內容 安裝腳本 ansible變量&#xff0c;需修改 ansible配置文件和主機清單&#xff0c;需修改 運行方式 驗證故障轉移master 涉及redis鏡像和完整的腳本文件 示例主機列表 架構參考 文件內容 安裝腳本 #!/bin/bashset -e export pa…

Apache Arrow 使用

下述操作參考 Building Arrow C — Apache Arrow v20.0.0.dev267 安裝依賴組件 sudo apt-get install \build-essential \ninja-build \cmake 下載源碼 git clone --recursive --shallow-submodules gitgithub.com:apache/arrow.git 配置 創建build目錄并且進入 mkdir a…

玩轉大語言模型——使用華為官方MindIE-Server鏡像方式部署DeepSeek模型

系列文章目錄 玩轉大語言模型——使用langchain和Ollama本地部署大語言模型 玩轉大語言模型——三分鐘教你用langchain提示詞工程獲得貓娘女友 玩轉大語言模型——ollama導入huggingface下載的模型 玩轉大語言模型——langchain調用ollama視覺多模態語言模型 玩轉大語言模型—…

MCP項目開發-一個簡單的RAG示例

MCP項目開發-一個簡單的RAG示例 前言 前言 客戶端是基于官網的例子改的&#xff0c;模型改成了openai庫連接僅僅使用基礎的RAG流程作為一個演示&#xff0c;包含了以下步驟 query改寫搜索&#xff1a;使用google serper重排序&#xff1a;使用硅基流動的api 大模型api也使用…

Tire樹(字典樹)

理論 上圖是一棵Trie樹&#xff0c;表示了關鍵字集合{“a”, “to”, “tea”, “ted”, “ten”, “i”, “in”, “inn”} 。從上圖可以歸納出Trie樹的基本性質&#xff1a; 根節點不包含字符&#xff0c;除根節點外的每一個子節點都包含一個字符。從根節點到某一個節點&…

厄瓜多爾主流收單方式:Pago Efectivo支付

PAGOEFECTIVO&#xff08;Pago Efectivo&#xff09;是秘魯主流的在線支付方式&#xff0c;由El Comercio Group開發&#xff0c;主要為用戶提供安全、便捷的在線支付解決方案&#xff0c;支持網銀和現金支付&#xff0c;適用于沒有信用卡或不愿透露銀行信息的消費者。 Pago Ef…

【文獻研究】含硼鋼中BN表面偏析對可鍍性的影響

《B 添加鋼的溶融 Zn めっき性に及ぼす BN 表面析出の影響》由JFE公司田原大輔等人撰寫。研究聚焦 B 添加鋼在低露點退火時 BN 形成對鍍鋅性的影響&#xff0c;對汽車用高強度鋼鍍鋅工藝優化意義重大。通過多組對比實驗&#xff0c;結合多種分析手段&#xff0c;明確了相關因素…

語法: ptr=malloc(size)

MALLOC( ) 語法: ptrmalloc(size) 參數: size是一個整數,表示被分配的字節個數; 返回值: 如果允許的話,返回值是一個指向被分配存儲器的指針;否則的話, 返回值是一個非指針; 功能: 該函數用來分配一定大小的空間給一個對象,其大小為size,但該空間的值為不確定值; 有…

JavaScript創建對象與構造函數

目錄 創建對象 一、創建對象的 5 種核心方式 1. 對象字面量&#xff08;直接量&#xff09; 2. 使用 Object.create() 3. 工廠模式 4. 構造函數模式 5. ES6 class 語法&#xff08;語法糖&#xff09; 二、構造函數與 new 關鍵字 1. 構造函數的作用 2. 構造函數的特征…

AIDD-人工智能藥物設計-深度學習助力提高兒童低級別膠質瘤復發風險預測的準確性

深度學習助力提高兒童低級別膠質瘤復發風險預測的準確性 兒童低級別膠質瘤&#xff08;pLGG&#xff09;是一種常見于兒童患者中的腦腫瘤&#xff0c;盡管大多數時候被認為是良性腫瘤&#xff0c;但是它們仍然可能導致相關癥狀和并發癥的發生&#xff0c;包括但不限于頭疼、癲…

redis的數據類型(1)

https://redis.io/docs/latest/develop/data-types/strings/ 社區版支持&#xff1a; String&#xff0c;字符串 Hash&#xff0c;key-value格式 List&#xff0c;根據插入順序排序 Set&#xff0c;集合 Sorted set&#xff0c;有排序 Stream&#xff0c; Bitmap&#xff0c; …

Nacos配置中心使用

Nacos配置中心 Nacos除了可以做注冊中心,&#x1f517;Nacos下載和注冊中心教程,同樣可以做配置管理來使用。 一、統一配置管理 當微服務部署的實例越來越多&#xff0c;達到數十、數百時&#xff0c;逐個修改微服務配置就顯得十分的不方便&#xff0c;而且很容易出錯。我們…

OpenCV輪廓檢測全面解析:從基礎到高級應用

一、概述 輪廓檢測是計算機視覺中的基礎技術&#xff0c;用于識別和提取圖像中物體的邊界。與邊緣檢測不同&#xff0c;輪廓檢測更關注將邊緣像素連接成有意義的整體&#xff0c;形成封閉的邊界。 輪廓檢測的核心價值 - 物體識別&#xff1a;通過輪廓可以識別圖像中的獨立物體…

Jenkins學習(B站教程)

文章目錄 1.持續集成CI2.持續交付CD3.持續部署4.持續集成的操作流程5.jenkins簡介6.后續安裝部署&#xff0c;見視頻 bilibili視頻 Jenkins是一個開源的、提供友好操作界面的持續集成(CI)工具&#xff0c;起源于Hudson&#xff08;Hudson是商用的&#xff09;&#xff0c;主要用…