首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django:从多个连接表中获取结果

Django:从多个连接表中获取结果
EN

Stack Overflow用户
提问于 2019-03-02 20:22:45
回答 1查看 28关注 0票数 0

我有三张桌子,漂浮有很多轻量的东西,有很多的成分。

我想为每个浮选做一个视图,它可以访问轻质残留物的列表和相关成分的列表。每次浮选只有2-3个轻质残留物,成分也是如此,因此易于管理。

我可以得到浮选记录和它引用的轻质残留物,但是我很难通过lightresidue_id来获得成分。注:我知道lightresidue.id是Django的方式,但我选择了这种方式。

视图代码如下所示,我已经对lightresidue.lightresidue_id = 17进行了硬编码,它可以工作,但是我如何用它来替代lightresidue.lightresidue_id = composition.lightresidue_id呢?

代码语言:javascript
复制
def botanyoverview(request, flotation_id):
    flotation = get_object_or_404(Flotation, pk=flotation_id)
    lightresidue = LightResidue.objects.filter(flotation_id__flotation_id=flotation_id)
    # composition = Composition.objects.filter(lightresidue.lightresidue_id)
    composition = Composition.objects.filter(lightresidue_id=17)
    return render(request, 'dashboard/botanyoverview.html',
    {
        'flotation':flotation,
        'lightresidue':lightresidue,
        'composition':composition,
    })
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-02 21:16:11

您可以通过使用itertools链接所有lightresidue的组合来完成此操作。

代码语言:javascript
复制
from itertools import chain

def botanyoverview(request, flotation_id):
    flotation = get_object_or_404(Flotation, pk=flotation_id)
    lightresidue = LightResidue.objects.filter(flotation_id__flotation_id=flotation_id)
    queryset = []
    for i in lightresidue:
        queryset += Composition.objects.filter(lightresidue_id = i.lightresidue_id)

    composition = chain.from_iterable(queryset)
    return render(request, 'dashboard/botanyoverview.html',
    {
        'flotation':flotation,
        'lightresidue':lightresidue,
        'composition':composition,
    })

lightresidue可能包含一个或多个对象,因此我在这里分别获取与每个lightresidue关联的所有compositions,并使用itertools将它们组合在一起。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54958476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档