首页 > 其他 > 详细

django

时间:2021-05-26 23:25:28      阅读:36      评论:0      收藏:0      [点我收藏+]

1,正反向概念

正向查询:就是通过查询拥有外键的一方去查询没有外键的一方。正向查询按外键字段  第二次查询是多的一方 .all() 

反向查询:从没有外键的一方去查有外键的一方。反向查询按表名小写,  第二次查询是多的一方 _set.all()

二,分组查询

分组查询关键字annotate  ,比如统计每一本书作者的个数。

#  按照Book分类(挨annotate近的,查询外键(author)字段。

res=models.Book.objects.annotate(author_num=Count(‘author‘)).values(‘title‘,‘author_num‘) # 自动识别是author中的主键,用来被计数。

res=models.Book.objects.annotate(author_num=Count(‘autho_pkr‘)).values(‘title‘,‘author_num‘) 

# 如果annotate前面有values(),就是按照表里某个指定的字段分组,及按照values()括号里面的字段分组。

三,F查询

F查询:如果条件两边的数据均来自于表中,则可以用F查询。

res = models.Book.objects.filter(kucun__gt=F(‘maichu‘))

F查询还可以统一修改表中字段数据,比如修改书的价钱。

F查询,还可以拼接字符串。针对字符串稍微复杂一点需要再导入两个模块
from django.db.models import F,Value
from django.db.models.functions import Concat

四,Q查询

1,在filter()中,()内可以写多个参数,filter默认之支持and连接查询条件,如果需要修改条件,则需要使用Q。

      filter(Q()|Q())

2,

查询条件还可以由变量名模式改为字符串形式
q = Q() # 生成一个Q对象
q.children.append((‘字段名‘,‘条件‘))

比如:条件是用户的请求data是查询书的名字(是字符串)
直接将filter(q),就可以了

 

django

原文:https://www.cnblogs.com/huo-shui/p/14815241.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!