django查询过滤

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django查询过滤相关的知识,希望对你有一定的参考价值。

查询过滤:

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是字段,不清楚能不能直接写别的表名

以上是关于django查询过滤的主要内容,如果未能解决你的问题,请参考以下文章

Django:从查询集中删除过滤条件

查询后可以过滤查询集吗? django

Django-查询过滤器,具有外来关系

django-filter 不过滤查询

Django 模板过滤器查询集

Django模型查询集过滤器作为一个函数