2

重複する値をグループ化しようとしていますが、うまくいきません。私は何度もグーグルで検索しましたが、それらはdistinct()関数を指しています。何をしてもうまくいきません。以前に他のクエリ(私のものではない)でdistinct()を試してみましたが、機能していますが、今は使用していますが、機能していません。

ここに私のコードがあります:

models.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 に答える