美文网首页FastAPI从上线到下架
Tortoise筛选关联关系表数据-Prefetch

Tortoise筛选关联关系表数据-Prefetch

作者: 楠木cral | 来源:发表于2022-08-12 09:07 被阅读0次

在FastApi里面使用Tortoise-orm,查询关联表数据(外键、一对多、多对多等)时,可以用select_related和prefetch_related来查询,但是查询的关联数据需要筛选时,就需要用到Prefetch。
举例:用户表-部门表,查询部门时,同时获取部门下的人员列表时,就是一对多关系。

class User(models.Model):
    """用户表"""
    id = fields.IntField(pk=True)
    name = fields.CharField(max_length=32, index=True)
    is_staff = fields.BooleanField(default=False)  # 是否是管理员
    is_invalid = fields.BooleanField(default=False)  # 是否禁用
    department = fields.ForeignKeyField("cp_model.Department", on_delete=fields.SET_NULL, null=True,
                                        related_name="depart_users", help_text='所属部门')

class Department(AbstractDefaultColumn):
    """部门表"""
    id = fields.CharField(max_length=50, pk=True)
    name = fields.CharField(max_length=64, help_text='部门名')
查询部门和部门下的管理人员:
query_set = await Department.all().prefetch_related(
            Prefetch("depart_users", queryset=User.filter(is_invalid=False, is_staff=True))
        )

这里获取到的query_set里面,每个部门下的depart_users都是筛选过的

相关文章

  • Tortoise筛选关联关系表数据-Prefetch

    在FastApi里面使用Tortoise-orm,查询关联表数据(外键、一对多、多对多等)时,可以用select_...

  • django知识点四

    模型_02 一、关联关系 1、概述 关联关系指的是数据表之间的数据是相互依赖和影响关系,表之间有从属关系,比如,有...

  • MySQL关联查询时,我们为什么建议小表驱动大表?

    有的时候我们在操作数据库时会将两个或多个数据表关联起来通过一些条件筛选数据,在关联表时我们要遵循一些原则,这样会使...

  • 关联查询、子查询与分页查询

    关联查询 关联关系分为一对一,一对多,多对多关系关联查询就是从多张表中查询数据,当我们使用n张表使用关联查询,至少...

  • 多对一关系

    数据库表关联设计关系型数据库:第三范式:严格的关联关系的处理第三范式(Third Normal Form,3rd ...

  • Hibernate映射关系

    在 Hibernate 中,可以对多张存在关联关系的表进行操作,但需要在映射文件中,将对象的关联关系与数据库表的外...

  • 数据库(关系模型与关系代数)

    1. 关系 关系数据库是表的集合,即关系的集合。表中一行代表的是若干值之间的关联,即表的一行是由有关联的若干值构成...

  • 关系型数据库与 Elasticsearch 组合使用要点

    关系型数据库局限性 1.关系型数据库支持有限度的关联查询,一般在业务应用系统中,关联表会控制在 2~3 个表(有 ...

  • 关系型数据库和非关系型数据库

    (一)举个栗子 (1)关系型数据库通过外键关联来建立表与表之间的关系,(2)非关系型数据库通常指数据以对象的形式存...

  • mysql关联更新update

    mysql关联更新update,mysql关联修改 关联修改a表,将b表数据赋值给b表

网友评论

    本文标题:Tortoise筛选关联关系表数据-Prefetch

    本文链接:https://www.haomeiwen.com/subject/yxdawrtx.html