django orm 筛选
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "test.setting")
import django
django.setup()
# from django.core.management import call_command
#
#
# call_command("test", "")
from django.db import models
from chat.models import Dog
from django.db.models.functions import Cast
Dog.objects.create(name="Meg", age=1, data={"breed": "collie", "owner": {"name": "Tom", "age": 10}}, food=["noodles", "fuck"])
Dog.objects.create(name="WangWang", age=1, data={"breed": "collie", "owner": {"name": "LiMing", "age": 10}}, food=["bone", ])
Dog.objects.annotate(
title=Cast("data__breed", models.TextField()),
).filter(title__regex="c.*")
Dog.objects.annotate(
title=Cast("food__*", models.TextField()),
).filter(title__contains="nood")
from chat.models import Cat
Dog.objects.annotate(
title=Cast("data__owner__name", models.TextField()),
).filter(title__regex="t.*")
Dog.objects.annotate(
title=Cast("food", models.TextField()),
).filter(title__regex="t.*")
Cat.objects.annotate(
title=Cast("food__0", models.TextField())
).values("title")
# Cat.objects.annotate(
# food="food"
# ).filter(food="11")
Dog.objects.filter(data__owner__age__gt=1)
from django.db.models import Q
from django.utils import timezone
Dog.objects.filter(create_time__lt=timezone.now())
Dog.objects.filter(name__icontains="e")
Dog.objects.filter(name__startswith="M") # 区分大小
Dog.objects.filter(name__istartswith="M") # 不区分大小写
Dog.objects.filter(name__endswith="g") # 区分大小
Dog.objects.filter(name__iendswith="g") # 不区分大小写
Dog.objects.filter(name__regex=".*?g") # 区分大小写
Dog.objects.filter(name__iregex=".*?G") # 不区分大小写
Dog.objects.filter(age__exact=1)
Dog.objects.filter(age__in=[1, 2, 3])
Dog.objects.exclude(age=1)
Dog.objects.filter(~Q(age=1))
Dog.objects.filter(age__gt=1) # 大于
Dog.objects.filter(age__gte=1) # 大于等于
Dog.objects.filter(age__lt=2) # 小于
Dog.objects.filter(age__lte=2) # 小于等于
Dog.objects.filter(create_time__gt=timezone.now()) # 大于
Dog.objects.filter(create_time__gte=timezone.now()) # 大于等于
Dog.objects.filter(create_time__lt=timezone.now()) # 小于
Dog.objects.filter(create_time__lte=timezone.now()) # 小于等于
Dog.objects.filter(food__contains="noodles")
Dog.objects.filter(~Q(food__contains="noodles"))
Dog.objects.filter(age__in=[1, 2, 4])
Dog.objects.filter(age__range=(1, 10))
Dog.objects.annotate(
title=Cast("food", models.TextField()),
).filter(title__regex="t.*")
from chat.models import Cat
Cat.objects.annotate(title=Cast("food", models.TextField())).filter(title__regex="1.*")
Cat.objects.filter(food__0__contains="1")
Cat.objects.annotate(
title=Cast("food", models.TextField()),
).filter(title__contains="11,")
# 精确查找
Cat.objects.annotate(
title=Cast("food", models.TextField()),
).filter(title__regex="")
value = "11"
# rf"[\{{|,]{value}[,|\}}]"
Cat.objects.annotate(
title=Cast("food", models.TextField()),
).filter(title__regex=rf"[\{{|,]{value}[,|\}}]")
q = Q()
for item in ["{{item},", ",{item}},", ",{item},", "{{item}}"]:
q |= Q(title__contains=item.replace("{item}","11"))
Cat.objects.annotate(
title=Cast("food", models.TextField()),
).filter(q)
from django.contrib.postgres.fields import ArrayField
Cat.objects.annotate(
title=Cast("food", ArrayField(models.TextField())),
)
# .filter(q)
# FloatField
Dog.objects.annotate(
food=Cast("data__owner__age", models.IntegerField()),
).filter(food=10)
from django.db.models import F, Value, TextField
from django.db.models.expressions import Func
from django.contrib.postgres.fields import ArrayField
Cat.objects.annotate(
some_field_splitted=Func(
F('food'),
Value(","),
function='regexp_split_to_array',
output_field=ArrayField(TextField())
)
).filter()
# Dog.objects.annotate(
# # some_field_splitted=Cast("food",Func(
# # # F('food'),
# # # Value(","),
# # function='regexp_split_to_array',
# # output_field=ArrayField(TextField())
# # )
# # ))
from django.contrib.postgres.fields import JSONField, ArrayField
Dog.objects.annotate(
title=Cast("food__any", ArrayField(JSONField(models.TextField()))),
).filter(title__0="1")
django orm 筛选的更多相关文章
- Django orm 常用查询筛选总结
本文主要列举一下django orm中的常用查询的筛选方法: 大于.大于等于 小于.小于等于 in like is null / is not null 不等于/不包含于 其他模糊查询 model: ...
- Django ORM那些相关操作
一般操作 https://docs.djangoproject.com/en/1.11/ref/models/querysets/ 官网文档 常用的操作 <1> all() ...
- django orm 及常用参数
一些说明: 表myapp_person的名称是自动生成的,如果你要自定义表名,需要在model的Meta类中指定 db_table 参数,强烈建议使用小写表名,特别是使用MySQL作为后端数据库时. ...
- Django ORM中常用字段和参数
一些说明: 表myapp_person的名称是自动生成的,如果你要自定义表名,需要在model的Meta类中指定 db_table 参数,强烈建议使用小写表名,特别是使用MySQL作为后端数据库时. ...
- Django ORM那些相关操作zi
Django ORM那些相关操作 一般操作 看专业的官网文档,做专业的程序员! 必知必会13条 <1> all(): 查询所有结果 <2> filter(**kwargs) ...
- Django 2.0 学习(16):Django ORM 数据库操作(下)
Django ORM数据库操作(下) 一.增加表记录 对于表单有两种方式: # 方式一:实例化对象就是一条表记录france_obj = models.Student(name="海地&qu ...
- Django学习笔记之Django ORM相关操作
一般操作 详细请参考官方文档 必知必会13条 <> all(): 查询所有结果 <> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 <> ...
- Django ORM哪些操作
一般操作 看专业的官网文档,做专业的程序员! 必知必会13条 <1> all(): 查询所有结果 <2> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 ...
- python 终级篇 django ---ORM操作
一般操作 必会的 ...
- Django ORM --- 建表、查询、删除基础
1.什么是ORM ORM的全称是Object Relational Mapping,即对象关系映射.它的实现思想就是将关系数据库中表的数据映射成为对象,以对象的形式展现,这样开发人员就可以把对数据库的 ...
随机推荐
- RabbitMQ--工作模式
单一模式 即单机不做集群 普通模式 即默认模式,对于消息队列载体,消息实体只存在某个节点中,每个节点仅有 相同的元数据,即队列的结构 当消息进入A节点的消息队列载体后,消费 者从B节点消费时,rabb ...
- VMware Workstation centos7 虚拟机桥接方式联网,获取动态IP
在VMware中安装 Centos7 虚拟机,日常需要带着电脑外出.因此在远程连接虚拟机时,就要求与宿主机在同一网段.在不修改路由器的情况下,让宿主与centos7都动态从路由器获取IP地址,就能解决 ...
- luoguP1419 寻找段落(二分答案+单调队列)单调队列DP求在区间[l,r] 中长度至少为 m 的最大平均值
模板:单调队列DP求在区间\([l,r]\) 中长度至少为 \(m\) 的最大平均值 题目链接:Here 题意 给定一个长度为 \(n\) 的序列 \(a_1\) ~ \(a_n\) ,从中选取一段长 ...
- 针对Python基本数据类型的操作
在学习Python语法前,请大家务必注意,Python是通过缩进来定义代码层次的,即同一层次的代码都是左对齐,而下个层次的代码块与当前代码块相比,会有4个空格的缩进. 这里缩进的空格数是约定俗成的,当 ...
- 阿里云 FaaS 架构设计
摘要:希望通过本系列课程,让大家更深入了解阿里云FaaS架构设计,以及神龙高密部署的FaaS介绍. 本篇内容将从2个部分为读者介绍关于阿里云 FaaS 架构设计和神龙高密部署的 FaaS,希望可以让大 ...
- springboot - 解决使用pagehelper 报 SQL语句异常
原因: mapper.xml 中的sql加上了分号. <select id="search" resultType="***.Table"> sel ...
- SQL函数——时间函数
1.使用 NOW() . CURDATE().CURTIME() 获取当前时间 在这里我有一个问题想问问大家,你们平时都是怎么样子获取时间的呢?是不是通过手表.手机.电脑等设备了解到的,那么你们有没有 ...
- Shell-case-in-分支
- [转帖]TIDB - 使用BR工具进行数据热备份与恢复
一.BR工具 BR 全称为 Backup & Restore,是 TiDB 分布式备份恢复的命令行工具,用于对 TiDB 集群进行数据备份和恢复.BR 只支持在 TiDB v3.1 及以上版本 ...
- [转帖]Fiddler抓取Chrome浏览器访问baiud.com报NET::ERR_CERT_COMMON_NAME_INVALID
错误现象 解决方法: 1.Chrome浏览器地址栏中输:chrome://net-internals/#hsts 2.在Query HSTS/PKP domain处搜索www.baidu.com网站, ...