Django 请求仅显示第一个结果

Django request showing only the first result

该网站是关于存放 ecchi 动漫中的 pantsu 图片,可能会根据颜色、角色名称、动漫名称和内衣类型进行研究,与您选择的顺序无关 select标准。

我的 Pantsu table 有 3 个外键 -> 颜色、类型、女孩

我的女孩 table 有一个动漫外键。

让我们假设:

>>> girlList = Girl.objects.all()
>>> girlList
>>> [<Girl: Hanekawa Tsubasa>, <Girl: Hachikuji Mayoi>, <Girl: Hitagi Senjōgahara>]

好的,这就是我们想要的,但是现在,还有一件事:

>>> Color.objects.filter(pantsu__P_Girl__Girl_Name='Hachikuji Mayoi')    
[Color: White]

还是对的,这个妹子目前在我的数据库里只有一件裤子,而且是白色的。现在这个 :

>>> Color.objects.filter(pantsu__P_Girl__Girl_Name='Hanekawa Tsubasa')    
[Color: Black, Color: Pink]

再次更正,但这里出现了错误的部分,如果我想从我的数据库中获取所有女孩的颜色,只有这 2 个女孩,我会得到这样的结果,[White, Pink, Black] ,或类似的东西,但我没有。看

Color.objects.filter(pantsu__P_Girl=girlList)   
[Color: Pink, Color: Black]

我只从我的查询集中得到第一个元素的结果,这里我得到粉红色和黑色,因为 girlList 的第一个元素是 Hanekawa Tsubasa,她与粉红色和黑色相匹配。

为什么我不能得到匹配查询集的每个字段的结果?我错过了什么吗?

使用__in

Color.objects.filter(pantsu__P_Girl__in=girlList)

__in 接受一个列表作为输入,并且 returns 具有与列表中任何元素关联的 Girl 属性的所有记录

但是根据问题,如果 girlList 总是 Girl.objects.all(),那么你可以使用:

Color.objects.filter(pantsu__P_Girl_isnull=False)

from django.db.models import Q
Color.objects.filter(~Q(pantsu__P_Girl=None))

这会过滤所有没有 Girl 的颜色对象 None

好的,因为 girllist 是您必须使用的列表 __in:

Color.objects.filter(pantsu__P_Girl__in=girlList)

否则它只会使用列表中的第一个条目。