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 筛选的更多相关文章

  1. Django orm 常用查询筛选总结

    本文主要列举一下django orm中的常用查询的筛选方法: 大于.大于等于 小于.小于等于 in like is null / is not null 不等于/不包含于 其他模糊查询 model: ...

  2. Django ORM那些相关操作

    一般操作 https://docs.djangoproject.com/en/1.11/ref/models/querysets/         官网文档 常用的操作 <1> all() ...

  3. django orm 及常用参数

    一些说明: 表myapp_person的名称是自动生成的,如果你要自定义表名,需要在model的Meta类中指定 db_table 参数,强烈建议使用小写表名,特别是使用MySQL作为后端数据库时. ...

  4. Django ORM中常用字段和参数

    一些说明: 表myapp_person的名称是自动生成的,如果你要自定义表名,需要在model的Meta类中指定 db_table 参数,强烈建议使用小写表名,特别是使用MySQL作为后端数据库时. ...

  5. Django ORM那些相关操作zi

    Django ORM那些相关操作   一般操作 看专业的官网文档,做专业的程序员! 必知必会13条 <1> all(): 查询所有结果 <2> filter(**kwargs) ...

  6. Django 2.0 学习(16):Django ORM 数据库操作(下)

    Django ORM数据库操作(下) 一.增加表记录 对于表单有两种方式: # 方式一:实例化对象就是一条表记录france_obj = models.Student(name="海地&qu ...

  7. Django学习笔记之Django ORM相关操作

    一般操作 详细请参考官方文档 必知必会13条 <> all(): 查询所有结果 <> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 <> ...

  8. Django ORM哪些操作

    一般操作 看专业的官网文档,做专业的程序员! 必知必会13条 <1> all(): 查询所有结果 <2> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 ...

  9. python 终级篇 django ---ORM操作

                                       一般操作                                                          必会的 ...

  10. Django ORM --- 建表、查询、删除基础

    1.什么是ORM ORM的全称是Object Relational Mapping,即对象关系映射.它的实现思想就是将关系数据库中表的数据映射成为对象,以对象的形式展现,这样开发人员就可以把对数据库的 ...

随机推荐

  1. 聊聊时下火热的 AIGC 与 Web3

    近期,AI 已经开始影响到了音乐行业,在 B 站搜索"AI 孙燕姿",从流行歌曲到摇滚,从周杰伦到王力宏,没有 AI 孙燕姿驾驭不了的歌曲. 有用户评论:"我感觉 AI ...

  2. modint 板子

    自动对 int 取模 // modint template<int MOD> struct Fp { ll val; constexpr Fp(ll v = 0) noexcept : v ...

  3. 第17场-快乐AC赛

    A - 看我,看我,我最简单了 POJ - 2387 这道题是以前记录过的最短路板子题,然而我还是脑抽用Floyd交了一发 解题报告:https://www.cnblogs.com/RioTian/p ...

  4. AtCoder Beginner Contest 194 Editorial

    A - I Scream 根据 奶脂率 和 乳脂率 判断是何种冰淇淋 int main() { ios_base::sync_with_stdio(false), cin.tie(0); int a, ...

  5. vue学习笔记 十五、组件挂载过程及query方式带参数的页面跳转

    系列导航 vue学习笔记 一.环境搭建 vue学习笔记 二.环境搭建+项目创建 vue学习笔记 三.文件和目录结构 vue学习笔记 四.定义组件(组件基本结构) vue学习笔记 五.创建子组件实例 v ...

  6. warning: LF will be replaced by CRLF in public/tinymce/langs/zh_CN.js

    windows使用git时出现:warning:LF will be replaced by CRLF windows中的换行符为 CRLF, 而在linux下的换行符为LF,所以在执行add . 时 ...

  7. vue如何实现v-model

  8. 软件开发常说的CI/CD是什么

    本文翻译自国外论坛 medium,原文地址:本文翻译自国外论坛 medium,原文地址:https://medium.com/gitconnected/basics-of-ci-cd-a98340c6 ...

  9. 使用docker compose 编排微服务发布

    本文为博主原创,未经允许不得转载: 目录: 1. compose 简介 2. compose 安装 3. 编写 docker-compose.yml 实现微服务发布 4. docker-compose ...

  10. spring-transaction源码分析(5)TransactionInterceptor事务拦截逻辑

    spring-tx的事务拦截逻辑在TransactionInterceptor类,本文将详细分析其实现方式. 事务拦截器TransactionInterceptor spring-tx的事务拦截逻辑在 ...