我不明白为什么 Django 在下面的代码中返回重复项,有人可以解释一下吗?谢谢。
qs = PropTelephone.objects.filter(reference=91811, tel_number__isnull=False).exclude(tel_number='').values_list('tel_number', flat=True).distinct()
print qs
[u'0410224291', u'0410224291']
print qs.query
SELECT DISTINCT `PROP_TELEPHONE`.`TEL_NUMBER` FROM `PROP_TELEPHONE` WHERE (`PROP_TELEPHONE`.`TEL_NUMBER` IS NOT NULL AND `PROP_TELEPHONE`.`REFERENCE` = 91811 AND NOT (`PROP_TELEPHONE`.`TEL_NUMBER` = '' ))
从 dbshell 启动的查询仅返回一条记录
+-------------------------------+
| TEL_NUMBER |
+-------------------------------+
| 0410224291 |
+-------------------------------+
那么为什么 django 会为这样的查询返回两条相同的记录呢?当然在 DB 中存在两条记录,在其他列中具有不同的值。但 tel_number 列的不同应该只返回一个恕我直言。