django,天模组

时间:2013-01-05 06:23:19

标签: python django group-by itertools

我有models.py

class Game(models.Model):
    date = models.DateTimeField()

我希望有一个函数可以返回按天分组的所有游戏。结果应该是带有键的词典:'day'和'games'(当天的游戏列表)。我是这样做的:

from itertools import groupby

def get_games_grouped_by_days():
    def get_day(obj):
        return obj.date.day
    games = Game.objects.all()
    grouped_games = []
    for day, games_in_day in groupby(games, key=get_day):
        grouped_games.append({
            'day': day,
            'games': list(games_in_day)
        })
    return grouped_games

这个功能运行正常,但我想知道是否有更多的查询方式来做这样的组事。

1 个答案:

答案 0 :(得分:2)

怎么样:

query = Game.objects.all().query
query.group_by = ['date']
results = QuerySet(query=query, model=Game)

然后你可以迭代结果,从每个项目中获取日期和游戏。