首页 > 其他 > 详细

学习笔记20

时间:2018-08-13 00:26:16      阅读:187      评论:0      收藏:0      [点我收藏+]

对象跨表: 字段_另一个表的字段

values 跨表    小写的表名_字段

 技术分享图片

 

 

 

 

 

 

 

 

 

 

 

orm 操作

 排序:

list1 = models.userInfo.objects.filter(nid__lt=20).order_by("nid")   order.by("nid") 表示按照 nid 这个字段 从小到大排序
list1 = models.userInfo.objects.filter(nid__lt=20).order_by("-nid")  加了横杠 表示 从大到小排序‘’

按照 nid 进行分组聚合查询
list1 = models.userInfo.objects.values("nid").annotate(a1 = Count("age"))    annotate() 表示聚合  values()后面没有加上 annotate表示查询这个内容 加上了 则表示按照nid进行分组聚合


list1 = models.userInfo.objects.filter(nid__gt=2).values("nid").annotate(a1 = Count("ug_id")).filter(a1__gt=2)

分组后与分组前 加入筛选条件的区别
1. 分组前的条件不能使用 聚合函数别名 分组后可以使用聚合函数的别名
2. 分组前的filter 相当于 where 即 查询结果前数据库进行约束 分组后的 filter 相当于 having 对结果进行过滤


F: 表示 在原有的基础上 加值
model.userInfo.object.all().update(age=F("age")+1)


规律:values方法里面用字符串 如values("nid") filter()用 字典形式 filter(nid="1")

技术分享图片

 


技术分享图片

 


额外的查询方法 extra()
select 注意 是字典形式
使用 .extr( select = {"键名":"sql语句"}) 可以加上%s
where 注意 是列表形式 ["id=1 or id = 2","name=‘alex‘"] #逗号会自动转化成 and

tables 相当于联表操作
talbe=["表明"]

技术分享图片

 

技术分享图片

 


技术分享图片

 






学习笔记20

原文:https://www.cnblogs.com/classmethond/p/9465415.html

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