我正在尝试使用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。
答案 0 :(得分:1)
通过外键强制过滤连接(同样,默认顺序可以引发连接)。使用distinct删除重复的行:
results = ( Table
.objects
.using('production')
.filter(foreign_id=76)
.order_by()
.distinct()
)