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.mzph.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;主要用…