以下のコードで 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 から起動されたクエリは 1 つのレコードのみを返します
+-------------------------------+
| TEL_NUMBER |
+-------------------------------+
| 0410224291 |
+-------------------------------+
では、なぜdjangoはそのようなクエリに対して2つの同じレコードを返すのでしょうか? もちろん、DBには2つのレコードが存在し、他の列には異なる値があります。ただし、列 tel_number の個別は、IMHO を 1 つだけ返す必要があります。