ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python django 模型查询语法

2022-06-30 19:04:41  阅读:161  来源: 互联网

标签:__ filter python BookInfo 语法 readcount objects django id


#模型名称.objects.filter(属性名__运算符=值) 获取n个结果
#模型名称.objects.exclude(属性名__运算符=值) 获取n个结果
#模型名称.objects.get(属性名__运算符=值) 获取1个结果,找不到异常

#查询编号=1的图书,
book=BookInfo.objects.get(id=1)  #简写(属性名=值)
或者
book=BookInfo.objects.get(id__exact=1) #完整形式

BookInfo.objects.get(pk=1)  #主键

#查询书名包含某个字符串的图书
BookInfo.objects.filter(name__contains='牛')
#查询书名以某个字符串结尾的图书
BookInfo.objects.filter(name__endswith='牛')
#查询书名为空的图书
BookInfo.objects.filter(name__isnull=True)

#查询编号id为1或3或5的图书
BookInfo.objects.filter(id__in=[1,3,5])

#查询编号id大于3的图书
BookInfo.objects.filter(id__gt=3)
#大于gt
#大于等于gte
#小于lt
#小于等于lte

#查询编号id不等于3的图书
BookInfo.objects.exclude(id=3)
或
BookInfo.objects.filter(~Q(id=3))

#查询1988(pub_date)年发表的图书
BookInfo.objects.filter(pub_date__year=1980)
#查询1988年1月1日(pub_date)年后发表的图书
BookInfo.objects.filter(pub_date__gt='1980-1-1')


#查询阅读量(readcount)大于评论量(commentcount)的图书
BookInfo.objects.filter(readcount__get=F('commentcount'))

#查询阅读量(readcount)大于2倍评论量(commentcount)的图书
BookInfo.objects.filter(readcount__get=F('commentcount')*2)

#查询阅读量大于20,并且编号小于3的图书
BookInfo.objects.filter(readcount__get=20).filter(id__lt=3)
#等价
BookInfo.objects.filter(readcount__get=20),id__lt=3)


#或者语法:  模型名称.objects.filter(Q(属性名__运算符=值)|Q(属性名__运算符=值)|...)
#并且语法:  模型名称.objects.filter(Q(属性名__运算符=值)&Q(属性名__运算符=值)&...)
#not 非 语法:  模型名称.objects.filter(~Q(属性名__运算符=值))

#查询阅读量大于20,或者编号小于3的图书
BookInfo.objects.filter(Q(readcount__get=20)|Q(id__lt=3))

#聚合
#统计阅读总数
BookInfo.objects.aggregate(Sum('readcount'))

#按阅读量升序排序
BookInfo.objects.order_by('readcount')
#按阅读量降序序排序
BookInfo.objects.order_by('-readcount')

 

标签:__,filter,python,BookInfo,语法,readcount,objects,django,id
来源: https://www.cnblogs.com/zsx-blog/p/16428103.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有