Django QuerySet 包含重复条目
Django QuerySet contains duplicate entries
我正在尝试使用 Django 的 ORM 检索 table 的一些内容。
results = Table.objects.using('production').filter(foreign_id=76)
results.count() # 129807
此 table 的 id
列是主键,因此具有唯一条目。但是,返回的 QuerySet 有重复的条目:
results[7999].id # 27177397
results[121679].id # 27177397
不仅仅是 id
是重复的,它是整行。其实QuerySet的最后8000个结果都是重复的(我想到了前8000个但是没验证过)
当然,我已经验证 table 中的 id
列是唯一的,并且在直接使用 sql 查询 27177397
时(或通过django ORM),我只得到一个结果。
results = Table.objects.using('production').filter(id=27177397, foreign_id=76)
results.count() # 1
怎么会这样?
我正在使用 Django 1.6.7 和 pyscopg2 2.5.3。
按外键过滤强制连接(另外,默认顺序可以诱导连接)。使用 distinct 删除重复行:
results = ( Table
.objects
.using('production')
.filter(foreign_id=76)
.order_by()
.distinct()
)
我正在尝试使用 Django 的 ORM 检索 table 的一些内容。
results = Table.objects.using('production').filter(foreign_id=76)
results.count() # 129807
此 table 的 id
列是主键,因此具有唯一条目。但是,返回的 QuerySet 有重复的条目:
results[7999].id # 27177397
results[121679].id # 27177397
不仅仅是 id
是重复的,它是整行。其实QuerySet的最后8000个结果都是重复的(我想到了前8000个但是没验证过)
当然,我已经验证 table 中的 id
列是唯一的,并且在直接使用 sql 查询 27177397
时(或通过django ORM),我只得到一个结果。
results = Table.objects.using('production').filter(id=27177397, foreign_id=76)
results.count() # 1
怎么会这样?
我正在使用 Django 1.6.7 和 pyscopg2 2.5.3。
按外键过滤强制连接(另外,默认顺序可以诱导连接)。使用 distinct 删除重复行:
results = ( Table
.objects
.using('production')
.filter(foreign_id=76)
.order_by()
.distinct()
)