首页 > 解决方案 > Django ORM查询多个模型反向关系

问题描述

我有主模型,五个四个模型中有五个子模型具有外键关系,一个模型与主模型具有一对一的关系。我正在尝试对主模型执行查询并从按“id”排序的子模型中获取相关记录并选择第一条记录。我尝试了多种方法来实现这一点,但总操作需要大约 20 秒才能获取大约 6000 条记录。对于从这些模型中有效获取数据的任何帮助,我将不胜感激。

Model M:
    id
    name
    status

Model SA:
    m = Foreignkey(M)
    sa1

Model SB:
    m = Foreignkey(M)
    sb1

Model SC:
    m = Foreignkey(M)
    sc1

Model SD:
    m = Foreignkey(M)
    sd1

Model SE:
    m = OneToOne(M)
    se1

我厌倦了 select_related、prefetch_related,但仍然无法减少周转时间。

在尝试了不同的方法之后,目前,我正在使用以下方法,但从中,我得到了唯一在子模型中有数据的记录。但是无论子模型中的数据如何,我都需要从主模型中获取所有记录。

data = M.objects.exclude(
    SA=None,
    SB=None,
    SC=None,
    SD=None,
    SE=None,
)

我正在寻找如下输出:

{'id': 1212, 'name':'asdasd', 'sa1':'asdasda, 'sb1':'asdasda, 'sc1':'asdasda, 'sd1':'asdasda, 'se1':'asdasda}

标签: djangodjango-modelsdjango-orm

解决方案


推荐阅读