单表操做html
新增数据
models.类名.objects.create()
models.类名().save()
修改
models.类名.objects.filter(条件).update()
obj = models.类名.objects.filter(条件)
obj.属性 = 值
obj.save()
删除
models.类名.objects.filter().delete()
查询
all() 查询全部结果
filter 查询符合条件的数据
get 返回一个符合条件的数据
exclude 返回不匹配的数据
order_by 排序
reverse 对查询结果反向排序
count 计数
first 返回第一条数据
last 返回最后一条数据
exists 判断
values 返回queryset对象里面是字典
values_list 返回queryset对象里面是元组
dstinct 去重
返回queryset对象的方法
all filter exclude order_by reverse distinct
特殊的queryset
values values_list
返回具体对象
get first last
基于双下划线模糊查询
in 值是否在一个列表中
gt 大于
lt 小于
gte 大于等于
lte 小于等于
range 值是否在一个范围内
contains
icontains
startswith
pub_date_year 按年查询
https://www.cnblogs.com/liuqingzheng/articles/9472723.html
多表关联数据库
建立多表模型django
使用OneToOneField和ForeignKey模型表的字段后面会自动增长_id函数
ManyToManyField:会自动建立第三张表code
一对一的关系:OneToOneFieldhtm
一对多的关系:ForeignKey对象
多对多的关系:ManyToManyFieldblog
添加表记录排序
多对多rem
add 添加记录 能够传入对象,id
remove 删除记录 能够传入对象,id
clear 清空记录 没有参数
set 更新记录 传入列表
基于对象的跨表查询
一对一:正向:按字段 反向:按表名小写
一对多:正向:按字段 反向:按表名小写_set.all()
多对多:正向:按字段 反向:按表名小写_set.all()
基于对象的查询是屡次查询(子查询)
基于双下划线的跨表查询
正向按字段,反向按表名小写
聚合查询
from django.db.models import Avg,Sum,Max,Min,Count
models.类名.objects.all().aggregate(聚合函数)
分组查询
from django.db.models import Avg,Sum,Max,Min,Count
models.类名.objects.annotate(别名=聚合函数)
F查询:查询的条件做用两边都来自于数据库而非手动输入的值
Q查询:可以将filter内部默认的and关系转换成须要的