学习笔记——Django项目中关联查询以及关联查询的筛选

2022-10-01

关联查询:

  在Django项目中使用ORM模式设置表后,进行关联查询,即两个表直接有联系的查询。

方式:

  可以通过主表查询从表,也可以通过从表查询主表。

----------------

方式一实例:

(1)查询编号为1的图书中的人物

前提环境,进入pycharm,进入虚拟环境、进入shell环境。

首先,需要导入模块,先查询书籍编号为1的图书,后在此书中查询包含的人物。

from book.models import BookInfo1
book = BookInfo1.objects.get(id = 1)

通过主表查询从表信息

 book.personinfo_set.all()

  注:我的天呐,姐妹们,要注意了,“personinfo_set”后面是没有括号的,不加括号类似于系统默认给定的属性值。大早上的,搞人心态,晕~~~。

  说明:其中"personinfo"表中的字段有“id”、“name”、“gender”、“description”、“is_delete”、“book_id”。

--------------------

方式二:

通过从表查看主表,查询人物为1的书籍信息

导入模块,先查询到人物编号为1的记录,在查询信息。

from book.models import PersonInfo
person = PersonInfo.objects.get(id = 1)
person.book

查看所在书籍的名称

person.book.name

------------------------------------------

关联查询的筛选

两种方式:

  同上,筛选条件一种是通过主表查询从表,一种是通过从表查询主表。

方式一:

实例:查询图书,要求人物中包含“顾里”

同理,首先需要导入模块,

from book.models import BookInfo1

进行查询:

BookInfo1.objects.filter(personinfo__name = "顾里")

  说明:使用到“关联模型表的小写”是因为“BookInfo”是一个主表,默认包含了“personinfo”。如果表中含有外键,那么它是一个从表。

-----------------

方式二:

  通过从表查看主表

实例:查询人物,要求是编号为1的书籍中

首先,同理,还是先导入模块,之后由于是从表中所以内部包含了外键,直接通过包含外键的属性“book”进行调用。

from book.models import PersonInfo
PersonInfo.objects.filter(book__id = 1)

 

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:学习笔记——Django项目中关联查询以及关联查询的筛选 - Python技术站

(0)
上一篇 2023年4月2日 下午4:50
下一篇 2023年4月2日 下午4:50

相关文章

  • 装饰器第1天

    2022-09-11 装饰器 装饰器的定义:   装饰器是一种特殊的闭包函数,该闭包函数中有且只有一个参数,且该参数是一个函数类型。 装饰器的作用:   装饰器可以给已有函数添加新的功能。 装饰器的特点(区别与其他函数):   (1)它不会改变原来函数调用的方式。   (2)它不会改变原来函数的源代码。   (3)可以给原来的函数添加新的功能。 与装饰器配合…

    2023年4月2日
    00
  • 创建一个Django项目总结

    2022-09-25  首先,要安装好虚拟环境,之后要切换到虚拟环境中,使用的命令 workon 创建好的虚拟环境的名称 之后,创建一个Django项目使用的命令: django-admin startproject 项目名称 进入到该项目的目录下,创建一个子应用,使用的命令: python manage.py startapp 要创建的子应用的名称 其中 …

    Python开发 2023年4月2日
    00
  • 学习笔记——Django项目的删除数据、查询数据(filter、get、exclude)

    2022-09-30 删除数据: 方式一: 打开pycharm,进入虚拟环境,进入shell环境(python manage.py shell)。 删除数据,接上面的笔记——“学习笔记——Django项目的新增数据、修改数据” 导入模块: from book.models import BookInfo1 查找到要删除的数据: book = BookInfo…

    2023年4月2日
    00
  • 运行的第一个Django

    2022-09-24 创建了一个Django项目后,进行测试,输入指令: python manage.py runserver 出现了如下问题:      我还想着,Django模块通过安装“pip install django”导入了好几遍,尝试了几次都是这样。后来发现,是虚拟环境中没有Django模块的文件夹。之后,将之前下载解压的Django文件夹放入…

    2023年4月2日
    00
  • python中组合数据的操作

    2022-09-26 组合数据类型:  列表     字典     集合     元组 拷贝:     deep(深拷贝)     shallow(浅拷贝)     区别:例如,文件中有一个指针指向另一块存储空间,如果是深拷贝则将指向的那一块文件内容也全部拷贝,如果是浅拷贝那么不需要将指针指向的内容进行拷贝,只拷贝第一层级的内容。指针指向的内容属于第二层级。…

    Python开发 2023年4月2日
    00
  • 类装饰器

    2022-09-18  类装饰器的定义:   使用一个类作为一个装饰器,在类里面对已有函数添加其他功能。 类装饰器使用的一个实例: 1 class MyDecorator(object): 2 def __init__(self,func): 3 self.__func = func 4 5 def __call__(self, *args, **kwarg…

    2023年4月2日
    00
  • 学习笔记——Django项目中新增数据、修改数据

    2022-09-30 新增数据 方式一: 进入虚拟环境,进入shell工具环境中(“python manage.py shell”),插入数据。在插入数据之前,可以先将要插入的内容写在“views.py”中,,这样做的目的是先写在此处会有代码提示,较为方便。之后将内容放到shell工具中。 首先,先要导入某个表,使用的是ORM模式,因此导入的是一个子应用中的…

    Python开发 2023年4月2日
    00
  • 学习笔记——Django项目中的请求

    2022-10-03 url中的位置参数  位置参数存放的位置   是子应用中的自定义的“urls.py”文件中的路由中。 位置参数的设置:   如果位置参数很多,那么在自定义中的路由文件中可以使用正则表达式。位置参数就是在浏览器搜索中对应的关键词时,能够跳转到相应的界面。界面内容的设置是在子应用的“views.py”页面中。 子应用中的“urls.py”文…

    Python开发 2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部