假设我有一个模型类Parent
和一个类Child
。并且孩子有一个名为status
的字段和ForeignKey
与Parent
的关系。
假设我通过调用p = Parent.objects.filter(pk=1)
现在,如果我打电话给p.values('children__name')
,我会收到一份包含该父母姓名字典的列表。
我的问题是,如果我想拨打p.values('children__name')
,但只有当孩子的status
具体时才限制价值,我该怎么做?
我还想确保原始QuerySet不变,因为我不想将其过滤掉(对于较大的QuerySet)。我只想过滤基于某些参数的值。因此,例如,如果我想列出状态为“SICK”的所有父母和孩子,那么我不想调用p.filter(children__status='SICK').values('children__name')
,因为这将过滤父母。我希望仍然保留所有父母,只要将'children__name'的值过滤到具有特定身份的人。这有意义吗?
有没有办法在Django中这样做?
答案 0 :(得分:0)
p = Parent.objects.filter(age=50)
sick_children = p.filter('children__status='sick').values('children__name')
除非您将过滤器分配给p
。