学习笔记——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

相关文章

  • Django项目中的数据库引擎的修改注意点以及级联删除的设置

    2022-09-29 问题描述: 在“setting.py”的配置文件中修改数据库引擎中,将系统默认的”sqlite3″后缀改为了“sql”。出现问题。 原因分析:    问题查看:  修改后:    —————————————— 上述问题修改后,在“setting”中设置数据库的其他内容(主机、端口、…

    2023年4月2日
    00
  • 使用多个装饰器

    2022-09-18 多个装饰器使用的实例: 1 # 定义一个装饰器 2 def make_p(func): 3 print(“执行装饰器make_p”) 4 5 def inner(): 6 # 对已有函数增加新的功能 7 result = “<p>” + func() + “</p>” 8 # 和已有函数保持一致,如果已有函数有返…

    2023年4月2日
    00
  • 创建Django项目

    2022-09-24 在创建Django项目时,出现了    错误,查了一下,发现要创建一个Django项目,需要先使用命令: python -m pip install pytz 安装一个“时区模块”。一般错误提示中出现“xxx”模块没有发现,大概率是要进行安装一个模块或者其他。 之后创建一个Django项目: django-admin startproj…

    2023年4月2日
    00
  • 装饰器第1天

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

    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-27 问题描述:   编写Django代码时,设置了一个“static”文件夹,在里面放置了一张图片。在“setting”中设置了静态文件在服务器中的存储路径,But 浏览器运行时,显示    找不到,就很奇怪。 问题原因:   之后,在看了一眼代码,发现了一个问题,它是源于一个拼写的错误,如下   发现这个存储位置的拼写少了一个”s”。 其…

    2023年4月2日
    00
  • 学习笔记——Django项目中的过滤器,模板继承

    2022-10-08 过滤器 过滤器的含义:   过滤器即筛选出我们设定需要的,过滤掉我们不需要的数据。 过滤器使用的场景:   例如:在子应用的“views.py”中的一个类中的函数设置了一个请求在浏览器页面显示“组织内容”,例如:在“组织内容”中设置了一个“birthday:datatime.now()”。在“templates”文件夹中的“index.…

    Python开发 2023年4月2日
    00
  • 带有参数的装饰器

    2022-09-18 带有参数的装饰器的实质:   因为装饰器是不能在带有参数,所以要定义带有参数的装饰器应该换一种思路。在装饰器的外面套一个函数,使用该函数返回这个装饰器。 带有参数的装饰器的实例: 1 # 装饰器 2 def return_decorator(flag): 3 def decorator(func): 4 def inner(a,b): …

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