上次两篇基本学完的DjangoORM各种操作,怎么查,各种查。感兴趣的小伙伴可以戳这两篇文章学习下,一篇文章带你了解DjangoORM操作(进阶篇)、一篇文章带你了解DjangoORM操作(基础篇)。
但是还是遗留了一些技能。,再来瞅瞅吧!
查询
聚合操作
聚合操作,不要被名字吓到了,通常用在筛选完一些数据之后,求一下平均值了,什么的。
例如:求所有书的总价格和平均价格
原生sql
SELECTSUM(price)AS"所有书总价格",avg(price)AS"所有书平均价格"FROMweb_book;
执行结果
ORM
price=().aggregate(Sum("price"),Avg("price"),)print(price)
执行结果
可以发现和上面是一样的,但是会发现列名是默认是字段__聚合函数名。
原生sql是可以指定显示的列名的,同样,ORM也可以。
代码
查询方式,or还是="or"publish_id=1(("publish_id","1"))外键字段djangomodels对应的mysql为字段_id
publish_id=1,
publish=(id=1)
)
方式二,通过model对象.save()。
book_obj=(
title="人类简史2",
price=66.66,
PublishDate="2020-01-02",
comment_num=23,
collect_num=12,
#外键字段djangomodels对应的mysql为字段_id
publish_id=1,)
book_()
方式三,通过字典方式。可能有的时候,我们正好将传过来的参数构造成了一个字典,那就太好了,不需要再一个个取。
c_dict={
"title":"tcp编程从入门到精通2",
"price":88.1,
"PublishDate":"2020-01-03",
"comment_num":13,
"collect_num":78,
"publish_id":1,
}
(**c_dict)
更新注:update只能跟在在filter之后。
示例:将title="大明帝国"的数据修改为title="大明帝国666"。
代码
(title="大明帝国").update(title="大明帝国666")
filter可能筛选到的是多个值,一定要注意
删除delete只能跟在filter之后。
示例:删除title=大明帝国666的数据。
(title="大明帝国666").delete()
总结好了各位,到此为止,基本上,DjangoORM操作基本完毕,至少80%的知识都覆盖完毕。
本篇主要补充的是一些高端操作,例如聚合操作,分组操作,分组再筛选操作,F查询和Q查询。
如何动态构造Q查询。
相对来说,Django还是自由度比价高的,而且写起来确实比较省心。
版权声明:本站所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请举报,一经查实,本站将立刻删除。