Django笔记05

单表操作

新增数据
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

多表关联

创建多表模型

  使用OneToOneField和ForeignKey模型表的字段后面会自动增加_id

  ManyToManyField:会自动创建第三张表

  一对一的关系:OneToOneField

  一对多的关系:ForeignKey

  多对多的关系:ManyToManyField

添加表记录

  多对多

  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关系转换成需要的

https://www.cnblogs.com/liuqingzheng/articles/9499252.html

原文地址:https://www.cnblogs.com/LinChengcheng/p/10725455.html