2017-03-01 3 views
0

は、私は次のようにpointsフィールドを持つProfileモデルを持っています。私は、次の出力 -ランキング選手

id | rank 
----+------ 
    1 | 1 
    2 | 2 
    3 | 2 
    4 | 2 
(4 rows) 

初期データが

id | avatar | experience | fcm_token | user_id | island_id | points  
----+--------+------------+-----------+---------+-----------+-------------- 
    2 |  |   10 |   |  3 |   4 | 0.0000000000 
    3 |  |   10 |   |  4 |   3 | 0.0000000000 
    4 |  |   10 |   |  5 |   1 | 0.0000000000 
    1 |  |   10 |   |  2 |   3 | 5.1010101010 
(4 rows) 

をwas-私を与える

select id, RANK() over (order by points desc) as rank from player_profile ;

follows-ようである簡単な生のSQLクエリを使用してそれを行うことができます問題は、私がDjangoのORMを使用して二者択一のクエリを書くことができないことです。

答えて

1

Django < = 1.10では、純粋なPythonでウィンドウ関数を表現することができません。

しかし、Pythonコードと生のSQLを組み合わせて、必要な結果を得ることは可能です。

あなたのユースケースのウィンドウ関数を使用することについては、ここでスタックオーバーフローについて既に説明しています。見てください:Clean way to use postgresql window functions in django ORM?