day03
增删改查、模型定义与迁移、一对一关联
查询
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
网友评论