2つのフィールドに基づいてユニークな結果を取得した後、結果を並べ替えたいと思います。私が持っている問題は、私がDjangoで2つのorder_byを使うことができないということです。 Django clears the previous order_by()
whenever you use this function.distinctを使用した後でorder_byを実行するにはどうすればよいですか?
各order_by()コールは以前の注文をすべてクリアします。
モデルの例:
class Product(models.Model):
price = models.FloatField()
name = models.CharField(max_length=100)
group = models.CharField(max_length=100)
私は、同じグループにある製品を取得し、最低を持っていると思います。そして、価格で並べ替えたいと思います。このようなもの:
Product.objects.order_by('group','price').distinct('group').order_by('price')
Product.objects.order_by('group','price').distinct('group').order_by('-price')
事実は、最初の順序で使用すると別の製品が得られます。
-
EDITテーブルの
例:
id | name | group | price
0 | aaa | aaa | 10.0
1 | aaa | aaa | 1.0
2 | aaa | aaa | 2.0
3 | aaa | aaa | 1.0
4 | bbb | bbb | 2.0
5 | bbb | bbb | 2.1
6 | bbb | bbb | 10.0
価格で並べ替え:
1 | aaa | aaa | 1.0
4 | bbb | bbb | 2.0
- 価格で並べ替え:
4 | bbb | bbb | 2.0
1 | aaa | aaa | 1.0
私が問題にするのは、order_byを使用して並べ替えると返される商品が異なるということです。 SQL文で
はこのようなものになるだろう:私は[OK]をPostgreSQLの
実際、私はあなたがここでやろうとしていることをかなり得られませんでした。取得しようとしているSQLクエリを提供できますか? –
あなたはグループごとに最低価格を取得しようとしていて、価格で並べ替えられていますか? – SomeSillyName
2番目の 'order_by'節を切ってしまうと、最初の' order_by'節の順序は保持されませんか? –