三阶段day03-视图views之查询、表格一对一关联

day03 【三阶段day03-视图views之查询、表格一对一关联】增删改查、模型定义与迁移、一对一关联
查询

filter(条件): 查询满足条件的信息 例如:模型名.objects.filter() exclude(条件): 过滤掉满足条件的信息 例如:模型名.objects.exclude() count(条件): 计算个数 exists(): 是否存在 例如:模型名.objects.filter().exists() all(): 查询所有 例如:模型名.objects.all() get(条件): 查询满足条件的唯一一个对象信息 例如:模型名.objects.get() first(): 结果中的第一个 例如:模型名.objects.filter().first() last(): 结果中的最后一个 例如:模型名.objects.last() values(): 以键值对的形式获取对象信息 例如:模型名.objects.filter().values() order_by(对象属性): 排序 例如:模型名.objects.filter().order_by()

运算符
模糊查询:contains,icontains,startwith,endwith 例如:模型名.objects.filter(name__contains='小') 例如:模型名.objects.filter(name__startwith='小') 例如:模型名.objects.filter(name__endwith='小') 大小于:gt,gte,lt,lte 例如:模型名.objects.filter(age__gt=18) 范围:in 例如:模型名.objects.filter(id__in=[1,2,3,4,5]) 主键:pk 例如:模型名.objects.filter(pk=...)

聚合aggragate
from django.db.models import Max,Min,Avg,Count,Sum 模型.objects.all().aggragate(Avg('age'))

F()/Q()
F():对字段进行计算 Q():与、或、非

from django.db.models import Q,F stu1 = Student.objects.filter(Q(age=18),Q(gender=1))并且 stu2 = Student.objects.filter(Q(age=18)|Q(gender=1))或 stu3 = Student.objects.filter(Q(age=18)&Q(gender=1))并且 stu4 = Student.objects.filter(~Q(age=18))非stu=Student.objects.filter(chinese__gt=F('math')+10).first()

模型一对一
定义一对一: OneToOneField()class A: b1 =OneToOneField(B)class B(): name = CharField() A与B通过b1关联起来 正向查询,已知A对象a,查询B对象: a.b1 stu = A.objects.filter(address='美国').first() stui=stu.b1.name反向查询,已知B对象b,查询A对象: b.a stu = B.objects.filter(name='小明').first() stui = stu.a.address

    推荐阅读