Django QuerySet包含重复的条目

时间:2015-05-27 15:37:33

标签: django python-3.x django-queryset

我正在尝试使用django的ORM检索表的一些内容。

results = Table.objects.using('production').filter(foreign_id=76)
results.count()  # 129807

此表的id列是主键,因此具有唯一条目。但是,返回的QuerySet具有重复的条目:

results[7999].id  # 27177397
results[121679].id  # 27177397

重要的不仅是id,而是整行。事实上,QuerySet的最后8,000个结果都是重复的(我想到的是前8,000个,但我还没有验证过。)

当然,我已经验证表中的id列是唯一的,并且当直接使用sql(或通过django ORM)查询27177397时,我只得到一个结果。

results = Table.objects.using('production').filter(id=27177397, foreign_id=76)
results.count()  # 1

这怎么可能?

我正在使用django 1.6.7使用pyscopg2 2.5.3。

1 个答案:

答案 0 :(得分:1)

通过外键强制过滤连接(同样,默认顺序可以引发连接)。使用distinct删除重复的行:

results = ( Table
            .objects
            .using('production')
            .filter(foreign_id=76)
            .order_by()
            .distinct()
            )