Django 过滤器只显示第一个对象
我目前在django的一个数据库应用程序中工作。我想使用django filter向页面添加高级过滤功能,但我发现我的方法存在问题,希望您能帮助我 为了说明我的观点Django 过滤器只显示第一个对象,django,django-filter,Django,Django Filter,我目前在django的一个数据库应用程序中工作。我想使用django filter向页面添加高级过滤功能,但我发现我的方法存在问题,希望您能帮助我 为了说明我的观点 Organism.objects.all().filter(lipids=Lipid.objects.all()) 只返回包含第一个脂质对象的有机体对象,而不是所有有机体对象 更多详情: 假设我的模型是: 型号: 在django shell中: In [1]: from catalog.models import * In [2]
Organism.objects.all().filter(lipids=Lipid.objects.all())
只返回包含第一个脂质对象的有机体对象,而不是所有有机体对象
更多详情:
假设我的模型是:
型号:
在django shell中:
In [1]: from catalog.models import *
In [2]: o = Organism.objects.all()
In [3]: l = Lipid.objects.all()
In [4]: o
Out[4]: <QuerySet [<Organism: speceies_name_001>, <Organism: speceies_name_002>, <Organism: speceies_name_003>, <Organism: speceies_name_004>]>
In [5]: l
Out[5]: <QuerySet [<Lipid: common_name_001>, <Lipid: common_name_002>, <Lipid: common_name_003>, <Lipid: common_name_004>]>
In [6]: o.filter(lipids=l)
Out[6]: <QuerySet [<Organism: speceies_name_001>]>
[1]中的:从catalog.models导入*
在[2]中:o=organic.objects.all()
在[3]中:l=Lipid.objects.all()
在[4]中:
出[4]:
在[5]中:
出[5]:
[6]中:o.过滤器(脂质=l)
出[6]:
我希望看到所有的生物都被过滤掉,因为我没有过滤任何东西我确信这是我所缺少的一件基本的事情,但我无法理解 通过执行以下操作,Django自动选择first作为关系参数(智能参数) 你想要达到的是以下目标
.filter(lipids__in=Lipid.objects.all())
但更好的方法是做以下事情
.filter(lipids__isnull=False)
通过执行以下操作,Django自动选择first作为关系参数(智能参数) 你想要达到的是以下目标
.filter(lipids__in=Lipid.objects.all())
但更好的方法是做以下事情
.filter(lipids__isnull=False)
所以你基本上想要所有与它们相关联的脂质的生物体?是的,实际上这是我问题的简化,只是为了说明我的观点。在这种情况下,我希望看到所有的有机体,因为我过滤所有的脂质。。。它只返回含有第一个脂质的生物体……我确信这与脂质是一个众多领域有关……所以你基本上想要所有含有与它们相关的脂质的生物体?是的,实际上这是我问题的简化,只是为了说明我的观点。在这种情况下,我希望看到所有的有机体,因为我过滤所有的脂质。。。而且它只返回含有脂质的生物体……我确信这与脂质是一个众多领域有关……谢谢你的快速回答!这解决了我提出的问题,但不幸的是,我试图将其应用于我的实际问题(与django过滤器相结合),并且它一直在做同样的事情。我想我会问一个新问题,包括所有的细节。。。。谢谢你的快速回答!这解决了我提出的问题,但不幸的是,我试图将其应用于我的实际问题(与django过滤器相结合),并且它一直在做同样的事情。我想我会问一个新问题,包括所有的细节。。。。