查询过滤:
models.UserProfile.objects.filter(name__contains=‘liu‘) 忽略大小写在contains前面加个i
models.UserProfile.objects.filter(id__range=[1:3]) 根据id查找想要的数据
models.UserProfile.objects.all()[:5] 查询前5条
models.UserProfile..objects.order_by(‘name‘)[0]排序取第一条
models.UserProfile..objects.filter(name__startwith=‘liuyi‘) 查找 以什么开头的
models.UserProfile..objects.filter(name__endwith=‘liuyi‘) 查找 以什么j结尾的
单表内不同字段对比:
from django.db.models import F
models.UserProfile.objects.filter(name_gt=F(‘age‘))
单表内and查询:
frmo django.db.models import F
models.UserProfile.bojects.filter(name_gt=F(‘age‘),age_lt=F(‘name‘))
单表内or查询:
from django.db.models import Q
models.UserProfile.objects.filter(Q(name__gt=F(‘name‘))|Q(age__gt=F(‘age‘)))
原有数据自增:
entry.objects.all().update(age=F(‘age‘)+1)
orm聚合 求平均值
from django.db.models import Avg,Sum,Min,Max
models.UuserProfile.objects.all().aggregate(Avg(‘age‘))
orm聚合 求最大值,最小值,和
from django.db.models import Avg,Sum,Min,Max
models.UserProfile.objects.all().aggregate(Max(‘age‘))
models.UserProfile.objects.all().aggregate(ri=Sum(F(‘age‘)/F(‘name‘)),output_field=FloatField())
统计:
haha.objects.annotate(ri=Count(‘group‘)) group是字段,不清楚能不能直接写别的表名