iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何了解Django ORM操作
  • 417
分享到

如何了解Django ORM操作

2023-06-15 20:06:52 417人浏览 薄情痞子
摘要

本篇内容主要讲解“如何了解Django ORM操作”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何了解DjanGo ORM操作”吧!查询操作对象.外键字段比如,我们拿到了一个书的信息,我们可以

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

查询操作

对象.外键字段

比如,我们拿到了一个书的信息,我们可以这样打印他的信息。

代码

book = models.Book.objects.filter(title="<<大明帝国>>").first() print(f"book类型:{type(book)}") print(f"id:{book.id}") print(f"书名:{book.title}") print(f"价格:{book.price}") print(f"书名:{book.PublishDate}") print(f"出版社:{book.publish}") # 外键字段

执行结果

如何了解Django ORM操作

注:蓝色为外键字段

不知道你有没有疑问,为什么book.publish会把邮电出版社打印出来。

这个原因主要在于外键对象的__str__方法。

如何了解Django ORM操作

就是因为我Publish返回的是self.title,所以才能打印出来邮电出版社,如果我想打印出版社联系方式咋办?

代码

print(f"出版社类型:{type(book.publish)}")  # <class 'WEB.models.Publish'> # book.publish已经是models.Publish对象,所以可以自由调里面的属性 print(f"出版社电话:{book.publish.phone},")

执行结果

如何了解Django ORM操作

总结

对象.外键字段拿到的就是外键字段对象,直接就可以通过对象.外键字段.外键属性获取具体值。

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

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

但是如果说,我们拿到的就是一个出版社名呢?

通常情况下,你可能会这样!

代码

# 查询邮电出版社 publish_obj = models.Publish.objects.filter(title="邮电出版社").first() # 获取出版社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)

执行结果

如何了解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操作”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 如何了解Django ORM操作

本文链接: https://www.lsjlt.com/news/281443.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何了解Django ORM操作
    本篇内容主要讲解“如何了解Django ORM操作”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何了解Django ORM操作”吧!查询操作对象.外键字段比如,我们拿到了一个书的信息,我们可以...
    99+
    2023-06-15
  • 如何理解Django ORM操作
    这篇文章主要讲解了“如何理解Django ORM操作”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解Django ORM操作”吧!查询聚合操作聚合操作...
    99+
    2024-04-02
  • 怎么理解Django ORM操作
    本篇内容主要讲解“怎么理解Django ORM操作”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解Django ORM操作”吧!表结构设计还是从实际角度出...
    99+
    2024-04-02
  • django--ORM的单表操作
    Django--ORM单表操作创建一个新的django项目项目目录结构:Django连接数据库配置重点:第一步:修改settings.py文件DATABASES = {     &...
    99+
    2023-01-30
    操作 django ORM
  • django操作非ORM创建的表
    django--ORM连接已存在的表问题:django的ORM怎么连接已存在的表,然后进行增删查改操作?工作中会遇见很多二次开发的时候,表都是已经创建好的,用django的ORM进行二次开发,怎么操作数据库中的表呢下面介绍一种完美解决方案:...
    99+
    2023-01-30
    操作 django ORM
  • Python Django ORM连表正反操作技巧
    一、A表男生,B表女生,C表关系 1通过A表查与某个男生有关系的所有女生 思想1:在A表中确认男生后,通过反查到C表,获取相关内容(QuerySet),然后再跨到B表获取所有女生信...
    99+
    2024-04-02
  • Django静态文件配置request对象方法ORM操作讲解
    目录django框架请求流程静态文件及相关配置请求方法request对象方法pycharm链接MySQLDjango链接MySQLDjango ORMORM语法ORM外键关联djan...
    99+
    2024-04-02
  • Django ORM 事务和查询优化的操作方法
    目录一、事务操作二、 ORM 惰性查询三、only与defer四、select_related与prefetch_related一、事务操作 模块 from django....
    99+
    2024-04-02
  • Django ORM中,如何使用Coun
    示例models 解决方法 有时候,我们想要获取一个对象关联关系的数量,但是我们不要所有的关联对象,我们只想要符合规则的那些关联对象的数量。 示例models # models.py from django.db im...
    99+
    2023-01-31
    如何使用 Django ORM
  • Python Django ORM 深潜:掌控数据库操作的艺术
    Django 对象关系映射器 (ORM) 是一个强大且灵活的工具,它允许 Django 开发人员以面向对象的方式与数据库交互。通过使用 ORM,开发人员可以将数据库表映射到 Python 类,并通过这些类来访问和操作数据库中的数据。 Dj...
    99+
    2024-04-02
  • Django框架ORM操作数据库不生效问题示例解决方法
    目录问题描述定位过程 首先,我们怀疑是SQL语句拼装错误(比如ID不对),导致了删除不生效解决方案总结本文详细描述使用Django 的ORM框架操作PostgreSQL数据库删除不生...
    99+
    2023-01-07
    django orm操作数据库不生效 django orm框架操作
  • thinkphp如何使用ORM进行数据库操作
    本篇内容介绍了“thinkphp如何使用ORM进行数据库操作”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!ThinkPHP 是一款基于 PH...
    99+
    2023-07-06
  • 深入了解Python如何操作MongoDB
    目录前言1. 准备工作2. 连接MongoDB3. 指定数据库4. 指定集合5. 插入数据6. 查询7. 计数8. 排序9. 偏移10. 更新11. 删除12. 其他操作前言 Mon...
    99+
    2024-04-02
  • Django如何利用LogEntry生成历史操作
    小编给大家分享一下Django如何利用LogEntry生成历史操作,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!在开发测试平台的时候,虽然对某些关键功能做了权限设置,但毕竟是公司多人使用,有些数据的配置可能不小心被他人修改...
    99+
    2023-06-22
  • 如何使用Oracle中的emp、dept来学习Django ORM
    这篇文章主要为大家展示了“如何使用Oracle中的emp、dept来学习Django ORM”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用Oracle中的emp、dept来学习Djang...
    99+
    2023-06-17
  • 一文带你了解如何在Java中操作Redis
    文章目录 前言一、 Redis客户端简介1. Redis客户端分类2. Spring 整合 Redis 的两种方式 二、 使用 Jedis 操作 Redis1. Jedis的maven坐标2. 使用Jedis操作Redis的步骤...
    99+
    2023-08-16
    java redis 开发语言 后端 缓存 数据库
  • django orm中如何解决查询结果不区分大小写问题
    小编给大家分享一下django orm中如何解决查询结果不区分大小写问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1.1.1...
    99+
    2024-04-02
  • 深度解析Django REST Framework 批量操作
    目录DRF基本情况自定义批量操作批量创建批量删除批量更新djangorestframework-bulk依赖安装范例路由测试DRF3相关注意事项源码解读我们都知道Django res...
    99+
    2024-04-02
  • 如何在Django中实现高效的索引操作?
    当我们在Django中使用数据库时,索引操作是一个非常重要的环节。它可以显著提高数据库查询的效率,让我们的应用更加高效和稳定。在本文中,我们将介绍如何在Django中实现高效的索引操作。 一、什么是索引? 在数据库中,索引是一种数据结构,它...
    99+
    2023-10-27
    linux django 索引
  • Python Shell 与 Django ORM:如何快速高效地处理数据?
    Python 是一种非常流行的编程语言,而 Django 是一个开发 Web 应用程序的框架。在这个框架中,ORM(对象关系映射)模块是非常重要的,因为它可以帮助开发人员快速高效地处理数据。本文将介绍如何使用 Python Shell 和...
    99+
    2023-06-14
    shell spring django
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作