首页 > 其他分享 >Django:查询基础语法

Django:查询基础语法

时间:2024-08-19 23:16:09浏览次数:14  
标签:filter TypeInfo models 查询 语法 objects Django id

一、数据准备

1、在models.py中定义一个新闻和新闻类型的模型类

class NewsInfo(models.Model):
 """新闻表"""
 title = models.CharField(max_length=100, help_text='新闻标题', verbose_name='新闻标题', blank=True, default='')
 content = models.TextField(help_text='内容', verbose_name='内容', blank=True, default='')
 b_date = models.DateField(help_text='日期', verbose_name='日期')
 read = models.IntegerField(help_text='阅读量', verbose_name='阅读量', blank=True, default=0)
 good = models.IntegerField(help_text='点赞数量', verbose_name='点赞数量', blank=True, default=0)

class TypeInfo(models.Model):
 """新闻类型"""
 type = models.CharField(max_length=20, help_text='新闻类型', verbose_name='新闻类型')

2、再次生成迁移

python manage.py makemigrations

3、执行迁移

python manage.py migrate

4、登录Django后台,添加一些练习数据

二、查询函数

通过模型类.objects属性可以调用如下函数,实现对模型类对应的数据表的查询

函数名功能返回值说明
get 返回表中满足条件的一条且只能有一条数据。 返回值是一个模型类对象。 参数中写查询条件。1) 如果查到多条数据,则抛异常MultipleObjectsReturned。2)查询不到数据,则抛异常:DoesNotExist。
all 返回模型类对应表格中的所有数据。 返回值是QuerySet类型 查询集
filter 返回满足条件的数据。 返回值是QuerySet类型 参数写查询条件。
exclude 返回不满足条件的数据。 返回值是QuerySet类型 参数写查询条件。
order_by 对查询结果进行排序。 返回值是QuerySet类型 参数中写根据哪些字段进行排序。

Django的交互调试环境

启动项目,进入交互环境

python manage.py shell

导入models模块

from news.models import *

查询单条数据:get

# 查询id为3的新闻信息
NewsInfo.objects.get(id=3)

所有数据:all

# 查询所有新闻数据
NewsInfo.objects.all()

过滤:filter

# 查询新闻阅读量为9999的新闻数据:
NewsInfo.objects.filter(read=9999)

不等于:exclude

#查询所有id不等于1的新闻数据
NewsInfo.objects.exclude(id=1)

排序:oroder_by

#查询所有新闻数据并且按id进行排序(从小到大)
NewsInfo.objects.all().order_by('id')

#查询所有新闻数据并且按id进行排序(从大到小)
NewsInfo.objects.all().order_by('-id')

三、查询集

all, filter, exclude, order_by调用这些函数会产生一个查询集(QuerySet),查询集可以继续调用上面的所有函数。可以通过exists判断一个查询集中是否有数据

查询集特性

  • 惰性查询:只有在实际使用查询集中的数据的时候才会发生对数据库的真正查询
  • 缓存:当使用的是同一个查询集时,第一次使用的时候会发生实际数据库的查询,然后把结果缓存起来,之后再使用这个查询集时,使用的是缓存中的结果
  • 索引取值
    TypeInfo.objects.all()[0]
  • 切片操作
    TypeInfo.objects.all()[0:3]

     

四、模糊条件查询

#条件语法格式
模型类.objects.filter(模型类属性名__条件名=值)

包含:contains

# 查询名称里包含'娱乐’的新闻类别。
TypeInfo.objects.filter(new_type__contains='娱乐')

开头:startswith

# 查询以'国'开头的新闻类别 
TypeInfo.objects.filter(new_type__startswith='国')

结尾:endswith

# 查询以'资讯'结尾的新闻类别
TypeInfo.objects.filter(new_type__endswith='资讯')

范围查询:in

# 查询id为1或3或5的新闻类别
TypeInfo.objects.filter(id__in=[1,3,5])

五、比较查询

大于:gt

# Demo:查询id大于3的数据
TypeInfo.objects.filter(id__gt=3)

小于:lt

# Demo:查询id小于3的数据
TypeInfo.objects.filter(id__lt=3)

大于等于:gte

#Demo:查询id大于等于5的数据
TypeInfo.objects.filter(id__gte=5)

小于等于:lte

# Demo:查询id小于等于3的数据
TypeInfo.objects.filter(id__lte=3)   

六、空查询: isnull

isnull值为True:表示查询为空的数据,值为False查询不为空的数据

Demo:查询标题不为空的新闻.
NewsInfo.objects.filter(title__isnull=False)

 

标签:filter,TypeInfo,models,查询,语法,objects,Django,id
From: https://www.cnblogs.com/Durant0420/p/18368332

相关文章

  • Oracle索引使用原则:优化查询性能的关键
    1.索引信息的查询:要获取数据库中索引的相关信息,如索引类型、所在表、是否唯一索引等,可以查询与索引相关的数据字典视图。常用的数据字典视图包括dba_indexes、dba_ind_columns、user_indexes和user_ind_columns等。dba_indexes和dba_ind_columns视图需要DBA权限才能访问,......
  • Markdown语法
    Markdown语法参考8分钟让你快速掌握Markdown_哔哩哔哩_bilibiliMarkdown基本语法|Markdown官方教程标题#标题一##标题二###标题三####标题四#####标题五######标题六快捷键CTRL+数字引用>这是一段引用这是一段引用列表有序列表1.one2......
  • 高校爬虫可视化系统-基于python|Django|flask的高校爬虫可视化系统|大学数据抓取与展
    博主介绍:✌十余年IT大项目实战经验、在某机构培训学员上千名、专注于本行业领域✌技术范围:Java实战项目、Python实战项目、微信小程序/安卓实战项目、爬虫+大数据实战项目、Nodejs实战项目、PHP实战项目、.NET实战项目、Golang实战项目。主要内容:系统功能设计、开题报告......
  • 云计算实训31——playbook(剧本)基本应用、playbook常见语法、playbook和ansible操作
    playbook(剧本):是ansible⽤于配置,部署,和管理被控节点的剧本。⽤于ansible操作的编排。使⽤的格式为yaml格式一、YMAL格式以.yaml或.yml结尾⽂件的第⼀⾏以"---"开始,表明YMAL⽂件的开始(可选的)以#号开头为注释列表中的所有成员都开始于相同的缩进级别,并且使⽤⼀......
  • sql Server 递归查询
    插入数据insertintoDepartment(Id,Name,ParentId)VALUES(1,'总经办',0),(2,'研发部',1),(3,'人事部',1),(4,'设计部',2),(5,'行政部',3) 查询意图:查询某个部门下所有子部门包括本部门所在层级WITHCTEAS(SELECTId,0......
  • JavaScript-快速语法参考-全-
    JavaScript快速语法参考(全)原文:JavaScriptQuickSyntaxReference协议:CCBY-NC-SA4.0一、使用JavaScript要开始试验JavaScript,您应该安装一个支持这种语言的集成开发环境(IDE)。有很多不错的选择,比如NetBeans、Eclipse、VisualStudio、括号。在本书中,我们将使用NetBe......
  • python基础语法 010 类和对象-6-1 继承定义
    前提:    在真实世界中,类型之间可能存在范围包含关系,比如:人这个类型和亚洲人这个类型。        人是包括了亚洲人的,如果某人是员工亚洲人,那么它必定是一个人        这种关系,在编程语言中称为继承关系        比如上面例子:亚洲人这个类就继......
  • 基于django+vue框架的实时新闻推送平台edpjq【开题报告+程序+论文】计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在信息爆炸的时代,新闻资讯的时效性成为了媒体竞争的关键。随着互联网技术的飞速发展,人们获取新闻的方式已从传统的报纸、电视转向了手机、......
  • 基于django+vue框架的教学资源管理系统【开题报告+程序+论文】计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,教育领域正经历着前所未有的变革。传统的教学模式逐渐向数字化、网络化、智能化方向转型,教学资源管理系统作为教育......
  • 基于django+vue框架的动漫视频网站6ygmo【开题报告+程序+论文】计算机毕
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着互联网的飞速发展和数字媒体技术的不断进步,动漫文化在全球范围内迅速普及,成为年轻人喜爱的文化形式之一。动漫视频网站作为传播动漫内......