我目前在django的数据库应用程序中工作。我想使用django-filter为页面添加高级过滤功能,但是我发现了一个问题,我希望你能帮助我。Django .filter只显示第一个对象
为了说明我的观点,
Organism.objects.all().filter(lipids=Lipid.objects.all())
只返回具有第一脂质对象的生物对象,而不是所有的生物对象的....
更多细节: 比方说,我的型号有: 型号:
class Organism(models.Model):
species_name = models.CharField(max_length=200, help_text="Species Name")
strain_name = models.CharField(max_length=200, help_text="Strain Name")
lipids = models.ManyToManyField('Lipid',blank=True)
def __str__(self):
return('{}'.format(self.species_name))
class Lipid(models.Model):
common_name = models.CharField(max_length=100,blank=True)
category = models.CharField(max_length=100,blank=True)
main_class = models.CharField(max_length=100,blank=True)
def __str__(self):
return('{}'.format(self.common_name))
在Django的壳:
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>]>
我期望看到所有的生物[6],因为我没有过滤任何东西!
我相信这是一个基本的东西我失踪,但无法弄清楚!
所以你基本上想要所有的有机体与他们有关联的脂质? – karthikr
是的,其实这是对我的问题的简化,只是为了表明我的观点。在这种情况下,我期待看到所有的有机体,因为我正在过滤所有的脂质......而且它只返回具有第一脂质的有机体......我相信它与脂质成为一体manytomany field .... –