django-7-django模型系统
2024-08-31 10:06:11
<<<常用的模型字段类型>>>
https://docs.djangoproject.com/en/2.1/ref/models/fields/#field-types
https://docs.djangoproject.com/en/2.1/ref/models/fields/#field-types
InterField
CharFiled
TestFiled
DateFiled
AutoFiled(primary_key=True)自增,不指定主键会自动创建
CharFiled
TestFiled
DateFiled
AutoFiled(primary_key=True)自增,不指定主键会自动创建
在使用的时候何以设置DateField.auto_now每次自动保存对象的时候自动设置改字段为当前时间,设置DateField.auto_now_add当对象第一次被创建时自动设置当前时间
DateTimeFiled
DateTimeFiled
<<<常用的字段参数>>>
https://docs.djangoproject.com/en/2.1/ref/models/fields/#field-options
https://docs.djangoproject.com/en/2.1/ref/models/fields/#field-options
primary_key
auto_dreated
unique指定是否为唯一
auto_now
auto_dreated
unique指定是否为唯一
auto_now
<<<常用查询>>>
通过模型类上的管理器来构造
模型类上的管理器(class.objects)
通过模型类上的管理器来构造
模型类上的管理器(class.objects)
queryset (惰性,,没有操作数据库)表示数据库中对象的集合,等同于select 语句
query 获取mysql 语句
query 获取mysql 语句
first() 获取第一条,返回对象
last() 获取最后一条,返回对象
get(**kwargs) 根据给定的条件获取一个对象,如果有多个对象符合则报错
all() 获取所有记录
filter(**kwargs) 根据给定的条件获取过滤后的queryset,多个条件用','连接
exclude(**kwargs) 作用和filter相反,去除不符合条件的对象
last() 获取最后一条,返回对象
get(**kwargs) 根据给定的条件获取一个对象,如果有多个对象符合则报错
all() 获取所有记录
filter(**kwargs) 根据给定的条件获取过滤后的queryset,多个条件用','连接
exclude(**kwargs) 作用和filter相反,去除不符合条件的对象
多条件的or连接
from django.db.models import Q
Q(age=1) | Q(age=0)
from django.db.models import Q
Q(age=1) | Q(age=0)
返回某个字段
values(*fileds) field指定字段,返回一个queryset,返回一个‘字典列表’
only(*fields) 与values差不多,返回queryset,‘对象列表’,必须带上主键
defer(*field) 和only功能相反,用法一样,返回一个queryset,对象列表,排除
values(*fileds) field指定字段,返回一个queryset,返回一个‘字典列表’
only(*fields) 与values差不多,返回queryset,‘对象列表’,必须带上主键
defer(*field) 和only功能相反,用法一样,返回一个queryset,对象列表,排除
排序
order_by(*fields) 根据给定的字段来排序
如果要反序就在field前加'-'
order_by(*fields) 根据给定的字段来排序
如果要反序就在field前加'-'
切片 和python切片用法相似,不支持复索引,数据大的时候不用步长
***切片后不再支持附加条件与排序
***切片后不再支持附加条件与排序
*多字段排序有什么用?*
常用查询条件
> < =
通过'__' 使用
exact 默认等于
iexact 不区分大小写的匹配
contains
icontains 不区分大小写
in name__in = ['aa','ss','dd']
range age__range = (18, 20)
gt 大于
gte 大于等于
lt
lte
startswith
istartswith
endswith
iendswith
isnull True False
> < =
通过'__' 使用
exact 默认等于
iexact 不区分大小写的匹配
contains
icontains 不区分大小写
in name__in = ['aa','ss','dd']
range age__range = (18, 20)
gt 大于
gte 大于等于
lt
lte
startswith
istartswith
endswith
iendswith
isnull True False
聚合
django.db.models import Count, Avg, Max , Min, Sum(通过管理器的aggregate方法)
django.db.models import Count, Avg, Max , Min, Sum(通过管理器的aggregate方法)
count 计数
平均 aggregate(age_avg = Avg('age'))
平均 aggregate(age_avg = Avg('age'))
分组
查询男生有几个,女生有几个
结合 values , annotate(num = Count('sex'))
查询男生有几个,女生有几个
结合 values , annotate(num = Count('sex'))
**复杂查询**
from django.db.models.functions import lower
from django.db.models.functions import lower
order_by(lower('name').desc())
最新文章
- ABP理论学习之验证DTO
- mysql水平拆分与垂直拆分的详细介绍(转载http://www.cnblogs.com/nixi8/p/4524082.html)
- oracle11g关于表空间的问题
- ASP.NET MVC中HttpContext, HttpContextBase, HttpContextWrapper联系
- SQL学习笔记——SQL初入门,Ubuntu下MySQL的安装
- SpagoBi开发示例——员工离职人数统计
- 使用BeautifulSoup和正则表达式爬取时光网不同地区top100电影并使用Matplotlib对比
- aspectj 表达式 execution切点函数
- Docker 记一次容器内部修改宿主机挂载目录用户权限后宿主机目录变化
- [蓝桥杯]ALGO-101.算法训练_图形显示
- linux通过speedtest-cli测试服务器网速
- 使用delphi-cross-socket 开发kbmmw smart http service
- 基于iview的后台管理
- Modbus读写模拟量寄存器具体解释
- List集合中的数据按照某一个属性进行分组
- RF-For循环使用
- matlab pca基础知识
- second scrum meeting - 151026
- 剑指offer:二位数组中的查找
- Bootstrap--响应式图片轮播