django - Django:从多个连接表中获取结果
问题描述
我有 3 表浮选有很多轻渣有很多成分。
我想为每个浮选制作一个视图,该视图可以访问轻残基列表和相关成分列表。每次浮选只有 2-3 个轻质残留物,成分相同,因此易于管理。
我可以获得浮选记录及其参考的轻质残留物,但我无法通过 lightresidue_id 来获取成分。[nb 我知道 lightresidue.id 是 Django 的做事方式,但我选择了这种方式]
视图代码如下,我已经对其进行了硬编码lightresidue.lightresidue_id = 17
,但是如何将其替换为lightresidue.lightresidue_id = composition.lightresidue_id
.
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,
})
解决方案
您可以通过链接所有lightresidue
使用 itertools 的组合来做到这一点。
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
可能包含一个或多个对象,因此我在这里分别获取与每个对象相关联的所有对象,compositions
并lightresidue
使用itertools
.
推荐阅读
- meshlab - Meshlab中Hausdorff距离结果的含义
- python - 另一个如何在 Windows 启动时启动 Python 文件,但是
- javascript - 无法匹配 HTML 和 JAVASCRIPT 中的模式
- c# - 如何在 asp.net 核心中对非控制器进行依赖注入?
- python - 我的 on_member_join 事件不起作用,我尝试了意图,但它给出了这个错误
- java - JUnit Test 在同一个包中找不到父类
- xamarin.forms - 是否可以在 Uno 项目中使用 Xamarin Forms 控件?
- html - 为什么评级星宽不改变?
- git - GitHub Actions - 将公共回购克隆到我的私人回购?
- firebase - 在 Flutter Firebase 存储中显示我的所有文件夹