2

以下のコードで 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` = '' ))

dbshel​​l から起動されたクエリは 1 つのレコードのみを返します

+-------------------------------+
| TEL_NUMBER                    |
+-------------------------------+
| 0410224291                    |
+-------------------------------+

では、なぜdjangoはそのようなクエリに対して2つの同じレコードを返すのでしょうか? もちろん、DBには2つのレコードが存在し、他の列には異なる値があります。ただし、列 tel_number の個別は、IMHO を 1 つだけ返す必要があります。

4

1 に答える 1