【发布时间】:2019-05-23 11:48:29
【问题描述】:
在 django 中有什么方法可以通过查询集或 ids 列表过滤具有多对多关系的对象。在多对多中获取具有完全相同值的查询。 型号
class Parent(models.Model):
name = models.CharField(max_length=1000)
children = models.ManyToManyField(Child, blank=True)
观看次数
def filter_parents(request):
children = Child.objects.filter(id__in=[1,2,3])
parents = Parent.objects.filter(child=child)
return parents
预计: 我正在寻找在多对多领域具有完全相同孩子的过滤父母
【问题讨论】:
-
请确认,您想获取
Parents的查询集,在child字段中具有相同的孩子? Like[Parent(name='1', child='10'), Parent(name='2', child='10'), Parent(name='3', child='20'), Parent(name='4', child='20'), ]Like a queryset ofParentswhoes children has at list 2 Parents,是吗? -
@SergeyPugach 是的,有些孩子有 2 个父母,有些父母有几个孩子(比如 2 个或更多)。我有一组儿童查询(按姓名或 ID 或年龄过滤)。并且需要让父母拥有完全相同的多对多记录。
-
@SergeyPugach 我的意思是不要通过 _set 获取父母,而是通过多对多字段过滤它们
-
所以你需要有至少 2 个孩子的父母和那些孩子在你的查询集中的人
children对吗? -
@SergeyPugach 对,但稍作修正,可能会有 1 或 4 个孩子,数量是动态的。
Child.objects.filter(id__in=request.GET.get('ids_list', ''))
标签: django many-to-many