一篇文章带你了解Django ORM操作(高端篇)

前言

上次两篇基本学完的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还是自由度比价高的,而且写起来确实比较省心。

版权声明:本站所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请举报,一经查实,本站将立刻删除。

相关推荐