我正在尝试对重复值进行分组,但它无效。我谷歌很多次,他们指向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
答案 0 :(得分:2)
当你定义了一个排序时,distinct()
会在尝试执行SQL时考虑这些字段,因此会返回奇怪的结果。
您可以:
要么跳过订购,
在您的查询中调用空order_by()
您可以定义要distinct()
开的字段。
因此,根据您的情况,查询将是
Transaction.objects.order_by('payee').distinct('payee')
这将忽略您可能拥有的任何顺序,并且它会更清楚地发生什么,但这只是以PostGresSQL中可用的为代价。