2

私はこれらの2つのモデルを持っています。

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

サンプルPointLogオブジェクト;

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
4

2 に答える 2

1

PointLog.objects.all()。values('user'、'point__description')。annotate(points_gained = Sum('point__point'))

于 2012-08-23T12:22:56.170 に答える
0

これを使って:

result = PointLog.objects.all().values("user", 'point').annotate(num=Count("pk"))
于 2012-08-23T12:19:09.017 に答える