distinct()不起作用

时间:2013-04-10 07:30:48

标签: django

我正在尝试对重复值进行分组,但它无效。我谷歌很多次,他们指向distinct()函数。无论我做什么都不行。我之前在其他查询(不是我的)中尝试distinct()并且它正在工作,现在我正在使用它,它不起作用。

以下是我的代码:

models.py

 class Transaction(models.Model):
    payee = models.CharField(
        max_length=255
        )

views.py

 transactions = Transaction.objects.values_list('payee', flat=True).distinct()

输出:

 [u'YOUR LOCAL SUPERMARKET', 
  u'CITY OF SPRINGFIELD', 
  u'SPRINGFIELD WATER UTILITY', 
  u'DEPOSIT', 
  u'DEPOSIT'] 

请注意,DEPOSIT

的输出有重复

1 个答案:

答案 0 :(得分:2)

当你定义了一个排序时,distinct()会在尝试执行SQL时考虑这些字段,因此会返回奇怪的结果。

您可以:

  • 要么跳过订购,

  • 在您的查询中调用空order_by()

  • 您可以定义要distinct()开的字段。

因此,根据您的情况,查询将是

Transaction.objects.order_by('payee').distinct('payee')

这将忽略您可能拥有的任何顺序,并且它会更清楚地发生什么,但这只是以PostGresSQL中可用的为代价。

Read more here in the docs