django - 链接查询时 QuerySet 结果重复
问题描述
所以我试图将查询链接在一起。这就是我正在做的
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 上进行查询,则会执行 an INNER JOIN
,这意味着连接的每一侧的每个项目都会有一行。如果您想获得独特的结果,请使用distinct()
.
queryset_list = queryset_list.filter(
skills__skill_description__in=skill_filter
).distinct()
有关一些示例,请参阅本文。
推荐阅读
- api - UFT API 测试:如何为请求中的元素生成数字
- scala - 窗口规格/功能执行最佳方式或应首选任何替代方式
- python - Python 文件执行失败
- java - Spring-MVC / Java的汉字编码问题
- jquery - 如何在子跨度中切换课程?
- python - 这段代码片段中的“tid”究竟做了什么,它调用了线程ID吗?
- sql-server - 我需要在 Access VBA 中创建对 SQL Server 的插入传递查询
- reactjs - 错误:创建导航器不需要参数 REACT NATIVE
- python - 根据评论查找平均分数 - python
- sql - 更新表无法修改映射到非键保留 tqbles 的列