69.ORM查询条件:isnull和regex的使用
首先查看数据库中的article表的数据:

定义模型的文件models.py中的示例代码如下:
from django.db import models
class Category(models.Model):
name = models.CharField(max_length=100)
class Meta:
db_table = 'category'
class Article(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
category = models.ForeignKey('Category', on_delete=models.CASCADE, null=True)
create_time = models.DateTimeField(auto_now_add=True, null=True)
def __str__(self):
return "<(Article: id: %s,title: %s, content: %s)>" % (self.id, self.title, self.content)
class Meta:
db_table = 'article'
1. isunll:判断某个字段的值是否为空。views.py文件中示例代码如下:
from django.http import HttpResponse
from .models import Article
def index2(request):
# 1.isnull: 查找创建时间create_time是空的文章
articles = Article.objects.filter(create_time__isnull=True)
print(articles)
print(articles.query)
# 2. isnull: 同样,也可以查找create_time非空的文章
article = Article.objects.filter(create_time__isnull=False)
print(article)
print(article.query)
return HttpResponse('success!')
2.regex:大小写敏感的判断某字段的值是否满足正则表达式的条件;iregex:大小写不敏感的判断的判断某字段的值是否满足正则表达式的条件。示例代码如下:
def index2(request):
# 3.regex大小写敏感的正则表达式,
# 判断以hello开头的字符串
articles = Article.objects.filter(title__regex=r'^hello')
print(articles)
print(articles.query)
# 4.iregex大小写敏感的正则表达式
# 判断以hello开头的字符串
articles = Article.objects.filter(title__iregex=r'^hello')
print(articles)
print(articles.query)
return HttpResponse('success!')
打印出结果:
<QuerySet []>,返回的QuerySet为空。
SELECT article.id, article.title, article.content, article.category_id, article.create_time FROM article WHERE article.title REGEXP BINARY ^hello,需要注意的是,这里django底层执行的sql语句为BINARY 即代表的是区分大小写进行判断。
<QuerySet [<Article: <(Article: id: 1,title: Hello, content: 你好)>>, <Article: <(Article: id: 2,title: Hello World, content: 大家好)>>]>,返回两条满足正则表达式的数据。
SELECT article.id, article.title, article.content, article.category_id, article.create_time FROM article WHERE article.title REGEXP hello,这里执行的sql语句为正则表达式匹配hello,并不区分大小写。
根据关联表进行查询:
两个关联的模型之间可以相互查询,在以下实例中,category为父模型,article模型为子模型,category访问article表,可以通过默认的子模型的名字小写形式进行访问article表。如果不想使用默认的方式进行访问,可以通过在定义外检的时候,指定related_query_name的值来自定义方式。
def index3(request):
# 查找文章题目中包含中国的文章分类
# 注意:contains区分大小写判断某字段中的值是否包含某个值
# 在被翻译成了sql语句的时候会被翻译成LIKE BINARY.
category = Category.objects.filter(article__title__contains='中国')
print(category)
print(category.query)
return HttpResponse("success!")
打印出结果:
<QuerySet [<Category: Category object (3)>]>
SELECT category.id, category.name FROM category INNER JOIN article ON (category.id = article.category_id) WHERE article.title LIKE BINARY %中国%
69.ORM查询条件:isnull和regex的使用的更多相关文章
- ORM查询条件
模板: from django.db import models class Article(models.Model): title = models.CharField(max_length=20 ...
- 67.ORM查询条件:range的使用,使用make_aware将navie time 转换为aware time
模型的定义,models.py文件中示例代码如下: from django.db import models # 在定义模型的类时,一定要继承models.Model class Category(m ...
- 68.ORM查询条件:date,time,year,week_day等
1. date: 首先查看数据库中article表的信息,由表中的create_time字段可以看出时间为2020.2.5 打印出查询的结果: <QuerySet []>:但是查询的结果为 ...
- 64.Python中ORM查询条件:in和关联模型
定义模型的models.py文件中示例代码如下: from django.db import models class Category(models.Model): name = models.Ch ...
- 65.ORM查询条件:gte,gt,lte和lt的使用
1. gte: 代表的是大于等于,英文全称为:great than equal.举例:找到文章id大于等于3等文章,示例代码如下: 定义模型的示例代码如下: from django.db import ...
- django orm 的查询条件
Django的ORM查询操作: 查询数据库操作是一个非常重要的技术.在Django中,查询一般就是使用filter.exclude.get三个方法来实现,在调用这些方法的时候传递不同的查询条件来实现复 ...
- django ORM常用查询条件
假设有一个模型 class Article(models.Model): title=models.CharField(max_length=50) content=models.TextField( ...
- ORM查询简化
文章出处 https://www.cnblogs.com/wupeiqi/articles/6216618.html 字段 常用字段 AutoField(Field) - int自增列,必须填入参数 ...
- Django(17)orm查询操作
前言 查找是数据库操作中一个非常重要的技术.查询一般就是使用filter.exclude以及get三个方法来实现.我们可以在调用这些方法的时候传递不同的参数来实现查询需求.在ORM层面,这些查询条件都 ...
随机推荐
- Day4 - K - Ant Trip HDU - 3018
Ant Country consist of N towns.There are M roads connecting the towns. Ant Tony,together with his fr ...
- login SMTP send mail error : Unable to read data from the transport connection: net_io_connectionclosed
client.Credentials = new NetworkCredential(sSMTPuser, sSMTPpass); client.Credentials = new NetworkCr ...
- maven项目打包和运行
1. 添加pom <build> <plugins> <plugin> <artifactId>maven-assembly-plugin</ar ...
- Golang的基础数据类型-整型
Golang的基础数据类型-整型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.整型概述 Go语言的整数类型一共有10个. int: 默认是有符号(signed)整形,占用空间 ...
- Golang的标准输入输出
Golang的标准输入输出 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在很多情况下,我们希望用户通过键盘输入一个数值,存储到某个变量中,然后将该变量的值取出来,进行操作.这时候 ...
- 洛谷P1002——过河卒
又是洛谷题,要不是有小姐姐不会,我才不想动脑子.先贴一下题目地址https://www.luogu.org/problem/P1002 再贴一下题目: 我们读一下题目,这可不比学校的**算法题,读完一 ...
- 51nod 1065:最小正子段和
1065 最小正子段和 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 取消关注 N个整数组成的序列a[1],a[2],a[3],-,a[n],从中选出一 ...
- MSDN原版系统镜像ISO下载站
官网 网址1:http://www.imsdn.cn/ Windows 10 最新版本 1909 正式版 ISO 镜像下载 (微软 MSDN / VL 官方原版系统) 网址2:https://www. ...
- nodeks —— fs模块 —— 从流中 读取和写入数据
Fs流读取和写入数据 使用文件流来读取大文件不会卡顿 1, 从流中读取数据 var fs = require("fs"); var data = ''; var count = 0 ...
- apache启动错误:Could not reliably determine the server's fully qualified domain name
启动apache遇到错误:httpd: Could not reliably determine the server's fully qualified domain name [root@serv ...