学习笔记20

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

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=["表明"]

 






猜你喜欢

转载自www.cnblogs.com/classmethond/p/9465415.html
今日推荐