Django模型组由2个以上的元素组成

时间:2012-07-01 04:56:38

标签: python sql django

我有一个包含用户ID及其分数的表格。

eg. userid rating
    123    1
    123    2
    456    1
    789    5
    123    1

我想要实现的是这样的汇总表:

rating 1 : 32 ratings by 20 ppl       
       2 : 37 ratings by 15 ppl 
       etc.. 

ppl的数量应该是给予该评级的不同用户。

我已经完成了Django模型聚合方法,并知道如何使用计数等。 但是我无法想出能够实现这一目标的东西。

当然我可以检索整个集合并在python中使用for循环来计算,但这不会有效。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您正在寻找的SQL就像:

SELECT rating, COUNT(rating) AS rc, COUNT(DISTINCT userid) FROM rating_tbl GROUP BY rating ORDER BY rc DESC;

您还没有提供该模型,实际上在Django ORM,IMO中表示SQL并不容易。最简单的方法是直接编写,参考the doc

答案 1 :(得分:0)

也许是这样的:

MyTable.objects.annotate(Count('rating')).order_by('rating_count').annotate(Count('user_id'))