2017-03-01 60 views
0

我有一個Profile模型具有points領域如下:排名球員

class Profile(models.Model): 
    user = models.OneToOneField(User) 
    avatar = models.ImageField(default=None, null=True) 
    experience = models.IntegerField(default=10) 
    island = models.ForeignKey(Island, default=None, null=True) 
    fcm_token = models.CharField(max_length=255, default=None, null=True, unique=True) 
    points = models.DecimalField(default=0.0, max_digits=12, decimal_places=10) 

我想要做的就是根據自己的分用戶的是,等級。我可以用一個簡單的原始的SQL查詢是如下 -

select id, RANK() over (order by points desc) as rank from player_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) 

做問題是,我無法使用Django的ORM編寫一個相同的查詢

回答