如何了解Django ORM操作

技术如何了解Django ORM操作本篇内容主要讲解“如何了解Django ORM操作”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何了解Django ORM操作”吧!查询

本文主要讲解“如何理解Django ORM操作”。感兴趣的朋友不妨看看。本文介绍的方法简单、快速、实用。让边肖带你学习如何理解Django ORM操作。

查询操作

对象.外键字段

例如,我们得到一本书的信息,我们可以这样打印它的信息。

密码

book=models . book . objects . filter(title=“大明帝国”)。first()print(f ' book type : { type(book)} ')print(f ' id : { book . id } ')print(f ' book title : { book . title })。print(f ' price : { book . price } ')print(f ' title 3360 { book。publishdate} ')打印(f '出版社:{book.publish}')#外键字段执行结果。

如何了解Django  ORM操作

注:蓝色为外键字段

我不知道你是否有任何问题,但是为什么book.publish印刷了邮电出版社。

这主要是由于外键对象的__str__方法。

如何了解Django  ORM操作

我只能把它打印到邮电出版社,因为我返回了自己的标题。如果我想打印出版社的联系方式呢?

代码

Print(f ' publishing house type : { type(book . publish)} ')# class ' web . models.Publish ' # book . publish已经是一个models . publish对象,所以可以自由调整print的属性(f ' publishing house phone : { book . publish . phone },')来执行结果。

如何了解Django  ORM操作

总结

对象。外键字段获取外键字段对象,可以通过对象直接获取具体值。外键字段。外键属性。

反向查询(表名__set.all())

以上,我们通过正向查询的方式找到了该书对应出版社的具体信息。

但是如果我们得到一个出版社的名字呢?

通常,你可能是这样的!

密码

#查找邮电出版社publish _ obj=models . publish . objects . filter(title='邮电出版社')。first()#并获取press id publish _ id=publish _ obj . id #。用publish_id作为发布者id查找book _ list=models . book . objects . filter(publish _ id=publish _ id)print(book _ list)执行结果

如何了解Django  ORM操作

其实还有一种方法,用一个对象反向查找多个对象。

代码

publish _ obj=models . publish . objects . filter(title='邮电出版社')。first()book _ list=publish _ obj . book _ set . all()print(book _ list)执行结果。

n/20210521/332/386323.png" alt="如何了解Django ORM操作">

双下划线跨表查询

还是上述这个问题,通过一个出版社名,查找属于这个出版社的图书。

基于双下划线的跨表查询,理论是更简单的!

如何了解Django ORM操作

注:可以看到还有__contains等其他filter条件查询,通过__跨表依然是可以通用的。

代码

book_list = models.Book.objects.filter(publish__title="邮电出版社") print(book_list)

执行结果

如何了解Django ORM操作

连续跨表

__不仅可以进行跨一张表,还能跨多张表。

以图书Many作者表为例,根据出版社查询图书和作者多对多的信息。

代码

ret = models.BookManyAuthor.objects.filter(book__publish__title="邮电出版社") print(ret)

跨了book表又跨了publish表

如何了解Django ORM操作

执行结果

如何了解Django ORM操作

values

有时候,我们可能只需要一些特定的列,这时候使用values即可。

代码

# 语法 book_list = models.Book.objects.all().values("列1","列2",...) # 示例 book_list = models.Book.objects.all().values("title","price") print(book_list)

代码

如何了解Django ORM操作

values返回的值有点像列表套字典,但是其实本质还是QuerySet类型。

values_list

values_list和values功能一样,都是取相关的列,但是返回的类型格式不一样。

代码

book_list = models.Book.objects.all().values_list("title","price") print(book_list)

执行结果

如何了解Django ORM操作

这个有点像列表套元组,但是其实本质还是QuerySet。

related_name

related_name通常用于反向查询时,替换<表名>_set。

原方式

models.py

如何了解Django ORM操作

代码

# 查询邮电出版社 publish = models.Publish.objects.filter(title="邮电出版社").first() print(publish) # 反向一对多 book_list = publish.book_set.all() print(book_list)

执行结果

如何了解Django ORM操作

别名方式

models.py

如何了解Django ORM操作

代码

# 查询邮电出版社 publish = models.Publish.objects.filter(title="邮电出版社").first() print(publish) # 反向一对多 book_list = publish.book_list.all() print(book_list)

执行结果

如何了解Django ORM操作

filter().filter()...

上文我们说过,是支持多个filter的,filter(<条件>).filter(<条件>)...

这种情况通常用于不确定筛选条件,但是多层筛选的情况下。

代码

# 举例而已,后面filter里面可以是其他 或 的条件 book1 = models.Book.objects.filter(title="<<大明帝国>>").filter(price="99") # 效果同上 book2 = models.Book.objects.filter(title="<<大明帝国>>",price="99") print(book1) print(book2)

执行结果

如何了解Django ORM操作

到此,相信大家对“如何了解Django ORM操作”有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/38502.html

(0)

相关推荐

  • 视频服务器为什么推荐美国服务器

    技术视频服务器为什么推荐美国服务器美国视频服务器主要是指用于部署视频直播或者点播的流媒体SDK服务器。美国视频服务器一般采用独享的物理服务器。虚拟机不同,用户可以自行管理所有硬件资源,直接控制服务器的负载,不受于其他用户

    礼包 2021年11月1日
  • 使用rpm删除包的正确姿势是怎样的

    技术使用rpm删除包的正确姿势是怎样的这篇文章给大家介绍使用rpm删除包的正确姿势是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、使用rpm指令3秒删除PHP所有包在安装所有的框架和安装包

    攻略 2021年11月9日
  • SAP GUI里Screen Painter的工作原理是什么

    技术SAP GUI里Screen Painter的工作原理是什么今天就跟大家聊聊有关SAP GUI里Screen Painter的工作原理是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大

    攻略 2021年12月3日
  • ubuntu 访问win10共享文件(ubuntu 20.10安装教程)

    技术如何部署Ubuntu20.04 + k8s 1.21.0开发环境这篇文章主要为大家展示了“如何部署Ubuntu20.04 + k8s 1.21.0开发环境”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小

    攻略 2021年12月18日
  • 公务员报名要求,公务员省考报考条件要求

    技术公务员报名要求,公务员省考报考条件要求以2021年广西省考为例,报考要求为公务员报名要求:
    1.具有中华人民共和国国籍。
    2.拥护中华人民共和国宪法,拥护中国共产党领导和社会主义制度。
    3.具有良好的政治素质和道德品

    生活 2021年10月21日
  • 金银花别名,金银花另外一个名字叫什么

    技术金银花别名,金银花另外一个名字叫什么金银花学名叫忍冬,别名金银藤、银藤、子风藤、鸳鸯藤等金银花别名。 金银花 ,正名为忍冬。“金银花”一名出自《本草纲目》,由于忍冬花初开为白色,后转为黄色,因此得名金银花。是川续断目

    生活 2021年10月31日