python - 如何在 Django 中按日期对对象进行分组?

标签 python django

我正在尝试选择文章表中的所有对象,并将它们按日期分组。我认为它看起来类似于:

articles = Article.objects.filter(pub_date__lte=datetime.date.today()).group_by(pub_date.day)
articles = {'2010-01-01': (articleA, articleB, articleC...),
            '2010-01-02': (article1, article2, article3...)...}

最佳答案

这是 ignacio 建议使用 itertools.groupby 的一个工作示例.

class Article(object):
    def __init__(self, pub_date):
        self.pub_date = pub_date


if __name__ == '__main__':
    from datetime import date
    import itertools
    import operator

    # You'll use your Article query here instead:
    # a_list = Article.objects.filter(pub_date__lte = date.today())
    a_list = [
        Article(date(2010, 1, 2)),
        Article(date(2010, 2, 3)),
        Article(date(2010, 1, 2)),
        Article(date(2011, 3, 2)),
    ]


    keyfunc = operator.attrgetter('pub_date')

    a_list = sorted(a_list, key = keyfunc)
    group_list = [{ k.strftime('%Y-%m-%d') : list(g)} 
                  for k, g in itertools.groupby(a_list, keyfunc)]

    print group_list

输出:

[{'2010-01-02': [<__main__.Article object at 0xb76c4fec>, <__main__.Article object at 0xb76c604c>]}, {'2010-02-03': [<__main__.Article object at 0xb76c602c>]}, {'2011-03-02': [<__main__.Article object at 0xb76c606c>]}]

关于python - 如何在 Django 中按日期对对象进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3145246/

相关文章:

python - 用户登录时丢失 session 数据

python - Django - {% static %} 和/static/有什么不同?

django - 在 Django 中序列化一棵树

python - Django 交叉表模型结构

python - 在python中将字符串解析为日期

python - 在 python 中通过 django-crispy-forms 渲染表单

python - 安装 Django 时出错

python - 使用 Python 的 MySQLdb 更新 MySQL 表的问题

python - 更改seaborn箱线图线彩虹颜色

python - 将文本文件中单独标题下的列保存到单独的列表中