2

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

这是我的代码:

模型.py

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

视图.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

4

1 回答 1

3

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

因此,您可以:

  • 要么跳过订购,

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

  • 你可以定义你想要的字段distinct()

所以在你的情况下,查询将是

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

这将无视您可能拥有的任何顺序,并且对发生的事情也会更清楚一些,但这是以仅在 PostGresSQL 中可用为代价的。

在文档中阅读更多信息

于 2013-04-10T08:11:36.637 回答