跳转至

ORM


查询

表.objects.all() 查询所以值,可以for遍历

表.objects.get(条件) 查询,只能返回一个值

表.objects.filter(条件) 返回匹配的值

表.objects.exclude(条件) 返回不匹配的值

方法
.values('字段','字段'...)           查询字段,返回字典

.values_list('字段','字段'...)          查询字段,返回元组

.count()                    多少条记录

.exists()                   是否有数据

.order_by('-字段')[:3]    -代表从大到小后面可以加切片获得数据

关系

外键对象.外键字段 显示外键的所有主键

主键对象.外键表_set 显示主键的所有外键

外键字段__主建字段 在外键显示主键字段

外键表__外键字段 在主键显示外键字段

时间

.filter(时间字段__gte='2021-03-17 20:11:58') 大于等于这个时间 开始时间 gt大于

.filter(时间字段__lte='2021-03-17 20:11:58') 小于等于这个时间 结束时间 lt小于

Q

from  django.db.models import Q

...(Q(字段=变量)|Q(字段=变量)|Q(字段=变量)...)      或者搜索条件

模糊搜索

...(字段__icontains=变量)               模糊搜索icontains前面加i表示忽略大小写

合并结果

from itertools import chain
querysets = chain(model1, model1)

删除

表.objects.filter(条件).delete()

对象.delete()


修改

变量 =.objects.get(条件)
变量.字段  = '内容'
...
变量.save()
.objects.filter(条件).update(字段='内容',...)

增加

(字段='内容',...).save()
.objects.create(字段='值')
变量 = ()
变量.字段 = '值'
...
变量.save()

外键

.objects.create(字段=外键ID)
.objects.create(字段=获取的对象变量

表关系

外键对象.外键字段.add(主键对象)

主键对象.外键表_set.add(外键对象)

取消表关系

主键对象.外键表_set.remove(外键对象) 删除单个关系

主键对象.外键表_set.clear() 删除全部关系

外键对象.外键字段.remove(主键对象) 删除单个关系

外键对象.外键字段.clear() 删除全部关系


SQL

from django.db import connection
cursor = connection.cursor()        获得游标

cursor.execute('SQL')

cursor.fetchone()           获得单个值
cursor.fetchall()           获得多个值