对Django项目中的ORM映射与模糊查询的使用详解
ORM映射
什么是ORM映射?在笔者认为就是对SQL语句的封装,所写语句与SQL对应语句含义相同,使开发更加简单方便,不过也是存在弊端的,使程序运行效率下降。例如:
UserInfo.objects.get(id=2)
等于
select*fromuser_userinfowhereid=2
修改管理器(models.py)
导入新的包:fromdjango.dbimportmodels
进行模糊查询
开始进行查找前我们先来认识filter()方法。
这是一个过滤器方法用于过滤掉不符合条件的元素。
值得一提的是其内自带方法函数的引用方式为‘__方法名称'。
__exact精确等于like‘aaa'
__iexact精确等于忽略大小写ilike‘aaa'
__contains包含like‘%aaa%'
__icontains包含忽略大小写ilike‘%aaa%',但是对于sqlite来说,contains的作用效果等同于icontains。
__gt大于
__gte大于等于
__lt小于
__lte小于等于
__in存在于一个list范围内
__startswith以…开头
__istartswith以…开头忽略大小写
__endswith以…结尾
__iendswith以…结尾,忽略大小写
__range在…范围内
__year日期字段的年份
__month日期字段的月份
__day日期字段的日
__isnull=True/False
举几个例子:
obj1=UserInfo.objects.filter(user_name__contains='王')#以‘王'开头的user__name obj2=UserInfo.objects.filter(user_name__endswith='王')#以‘王'结尾的user__name obj3=UserInfo.objects.filter(id__gte=5)#ID大于等于5的 obj5=UserInfo.objects.filter(id__exact=5)#id等于5的 obj6=UserInfo.objects.filter(id__in=[1,3,5])#id等于1,3,5,的
exclude方法,排除选项。
obj8=UserInfo.objects.filter(password='123456',id__gt=2).exclude(phone=188) #找到符合filter的内容后排除phone等于188的,它的另一种写法为 fromdjango.db.modelsimportQ obj=UserInfo.objects.filter(Q(password='123456')&Q(id__gt=2)&~Q(phone=188))
计算和和最大值:
fromdjango.db.modelsimportSum,Max,Min obj=UserInfo.objects.aggregate(Sum('id')) obj=UserInfo.objects.aggregate(Max('id')) obj=UserInfo.objects.aggregate(Min('id'))
统计个数
print(UserInfo.objects.count())#注:print只可于终端查看
范围查找
obj=UserInfo.objects.all()[1:3]#左闭右开,只查找了1和2
去重复
obj=person.useraddress_set.all()
而get方法与filter的最大区别为,get只能返回一个数据,filter可以返回多个,在get查找到两个以上数据时就会报错。
obj4=UserInfo.objects.get(id=5) city=UserAddress.objects.get(detail='北京望京')
以上这篇对Django项目中的ORM映射与模糊查询的使用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。