该网站是关于从ecchi动漫中存放pantsu的照片,可能通过颜色,角色的名称,动漫名称和内衣类型进行研究,对您选择任何标准的顺序没有任何重要性
我的Pantsu表有3个外键 - >颜色,类型,女孩
我的女孩表只有一个外国动漫给动漫。
让我们假设:
>>> 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]
再次纠正,但是这里出现了错误的部分,如果我想从我的数据库中获得所有女孩的颜色,只有这两个女孩,我会得到一个结果,如[白色,粉红色,黑色],或者类似的东西,但我不知道。看。
Color.objects.filter(pantsu__P_Girl=girlList)
[Color: Pink, Color: Black]
我只从我的查询集中得到第一个元素的结果,这里我得到粉红色和黑色,因为girlList的第一个元素是Hanekawa Tsubasa,她匹配粉红色和黑色。
为什么我无法获得与查询集的每个字段匹配的结果?我错过了什么吗?
答案 0 :(得分:4)
答案 1 :(得分:2)
使用__in
Color.objects.filter(pantsu__P_Girl__in=girlList)
__ in接受列表作为输入并返回与列表中任何元素相关联的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 as None的颜色对象