2012-08-23 29 views
2

我有这两个模型;我如何根据django中的相关对象属性对对象进行分组?

class Point(models.Model): 
    point  = models.IntegerField() 
    description = models.CharField("Action", max_length=128) 

class PointLog(models.Model): 
    user = models.ForeignKey('users.User', verbose_name ="Related User") 
    point = models.ForeignKey(Point) 
    date = models.DateTimeField(default = datetime.datetime.now()) 

Point对象是静态的。我的意思是他们不会动态改变,它显示哪个动作会带来多少点。 PointLog对象显示用户的操作。用户可以完成多个相同的操作。

我想组PointLog对象根据用户动作和总结各种不同动作的点

帮助:)

采样点的对象;

description  point 
----------------------- 
make comment  5 
add photo  20 
add video  50 

Sample PointLog Objects;

User  point   date 
------------------------------ 
user1 make comment  .... 
user1 make comment  .... 
user1 add photo  .... 
user1 add photo  .... 
user1 add photo  .... 
user1 add photo  .... 
user1 add video  .... 
user1 add video  .... 
user1 add video  .... 

样品结果;

user1s action; 
    make comment 10 points gained 
    add photo 80 points gained 
    add video 150 points gained 
+0

。请为Point类添加一些数据。你确定你不需要Point和PointLog之间的多关系吗?行动定义在哪里? – schacki

+0

(注释2), (add_new_photo 20), (add_new_video 50) 第一是说明第二是点 – iskorum

+0

我两个对不起,我不明白这一点,请在帖子中提供(不只是在注释)数据,点,点记录,并描述分组和求和应该返回的内容。 – schacki

回答

1

PointLog.objects.all()的值( '用户', 'point__description')注释(points_gained = SUM( 'point__point'))

+0

非常感谢... – iskorum

0

使用这样的:

result = PointLog.objects.all().values("user", 'point').annotate(num=Count("pk")) 
相关问题