1

私は次の構造を持っています:

class Player(models.Model):
    name = models.CharField(max_length=50)
    dob = models.DateField(max_length=80)   

class Game(models.Model):
    name = models.CharField(max_length=50)


class Attempts(models.Model):
    player = models.ForeignKey("Player")
    game = models.ForeignKey("Game")
    won = models.BooleanField()

クラス Attempts は、各プレーヤーの試行と、ゲームに勝ったか負けたかを記録します。ここで、特定のゲームを agr グループで試行した人の数を取得したいと考えています。たとえば、0 ~ 18 歳の人がゲームを 5 回試行したとします。 on.djangoユーザーの次のこの投稿を参考にして、次のコードを作成しました。

ranges = [(0,18),(18,25),(25,50)]
now = datetime.now()

groups = {}
for (a,b) in ranges:
    # print str(a) + " " +str(b)
    newer_date = (now - relativedelta(years=a)).date()
    older_date = (now - relativedelta(years=b)).date()
    print str(newer_date)
    print str(older_date)

groups[str(a)+","+str(b)] = Attempts.objects.filter(game__pk = "101",player__dob__range=(older_date,newer_date)).count()

これにより、次のように結果も正しく得られます。

{"0,18": 2, "25,50": 1, "18,25": 1}

このコードによって作成されたクエリは、範囲内のカテゴリの数と同じです.1つのORMクエリでこのデータを取得する方法が必要です.それは可能ですか?

4

0 に答える 0