Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 链接查询时重复的查询集结果_Django_Django Orm - Fatal编程技术网

Django 链接查询时重复的查询集结果

Django 链接查询时重复的查询集结果,django,django-orm,Django,Django Orm,因此,我尝试将查询链接在一起。这就是我正在做的 queryset_list = modelEmployee.objects.filter(stars__lte=3) A = len(queryset_list) #A=2 queryset_list = queryset_list.filter(skills__skill_description__in=skill_filter) A = len(queryset_list) #A=4 因此,根据上面的结果,我假设得到两个结果,但我得到

因此,我尝试将查询链接在一起。这就是我正在做的

 queryset_list = modelEmployee.objects.filter(stars__lte=3)
 A = len(queryset_list) #A=2
 queryset_list = queryset_list.filter(skills__skill_description__in=skill_filter)
 A = len(queryset_list) #A=4
因此,根据上面的结果,我假设得到两个结果,但我得到了四个。似乎第一个查询的结果在第二个查询中被复制,因此结果为4。有没有关于为什么要复制结果以及如何解决这个问题的建议?我只希望得到两个项目,因为它通过了两个过滤器

这就是模型

class modelEmployee(models.Model):
    user                = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True)
    skills              = models.ManyToManyField(modelSkill, blank=True)
    location            = models.PointField(srid=4326,max_length=40, blank=True,null=True)

如果在
ManyToManyField
Django上执行查询,则将执行
内部联接
,这意味着联接的每一侧都有一行对应于每个项目。如果您想获得独特的结果,请使用


查看此示例。

您能否添加
modeleemployee
定义和
skill\u filter
。刚刚更新的postas skills是一个
manytomy
field employee实例,该实例启动时间小于3,即2,这两个实例都具有这些技能。这就像[]你只需要用户id吗?我想知道的是为什么我会得到重复的。假设第一个查询的结果是亚当和约翰。运行第二个查询后,Adam和John再次添加到查询集中。如果Adman和John拥有多项技能,他们将多次添加,那么最好更改过滤顺序。
queryset_list = queryset_list.filter(
    skills__skill_description__in=skill_filter
).distinct()