Python 使用Django ORM按日期对对象进行排序和分组
我有一个带有日期字段的文章模型。我想查询所有的Article对象,并在每个不同的年份返回一个数据类型,然后在该年份内每个不同的月份返回一个数据类型 比如说Python 使用Django ORM按日期对对象进行排序和分组,python,django,django-orm,Python,Django,Django Orm,我有一个带有日期字段的文章模型。我想查询所有的Article对象,并在每个不同的年份返回一个数据类型,然后在该年份内每个不同的月份返回一个数据类型 比如说 档案={ 2009: {12, [, ...], 11: [...]}, 2008: {12, [...], 11: [...]}, } 这可能吗?没有快速解决方案,但你可以检查方法。没有快速解决方案,但你可以检查方法。这类问题似乎经常出现。最简单的解决方案是遍历数据并按年份和月份对对象进行分组。可以在视图中手动执行此操作,也可以在模板中
档案={
2009: {12, [, ...], 11: [...]},
2008: {12, [...], 11: [...]},
}
这可能吗?没有快速解决方案,但你可以检查方法。没有快速解决方案,但你可以检查方法。这类问题似乎经常出现。最简单的解决方案是遍历数据并按年份和月份对对象进行分组。可以在视图中手动执行此操作,也可以在模板中使用。这实际上取决于您想对数据做什么
如果按年份和月份归档存档是应用程序中非常常见的事情,您可能需要考虑创建一个在SaveE()上填充的年和月字段。 用手可以是这样的:
arch = {}
for a in Archive.objects.all():
year = arch.get(a.pub_date.year, {})
month = year.get(a.pub_date.month, [])
month.append(a)
year[a.pub_date.month] = month
arch[a.pub_date.year] = year
或者使用(未测试)将所有分组逻辑推送到模板中:
我个人会尝试将逻辑放在视图中,而不是放在模板中
以下是一些相关帖子:
- 这类问题似乎经常出现。最简单的解决方案是遍历数据并按年份和月份对对象进行分组。可以在视图中手动执行此操作,也可以在模板中使用。这实际上取决于您想对数据做什么
如果按年份和月份归档存档是应用程序中非常常见的事情,您可能需要考虑创建一个在SaveE()上填充的年和月字段。 用手可以是这样的:
arch = {}
for a in Archive.objects.all():
year = arch.get(a.pub_date.year, {})
month = year.get(a.pub_date.month, [])
month.append(a)
year[a.pub_date.month] = month
arch[a.pub_date.year] = year
或者使用(未测试)将所有分组逻辑推送到模板中:
我个人会尝试将逻辑放在视图中,而不是放在模板中
以下是一些相关帖子:
[(date,Model.objects.filter(pub\u date\uu year=date.year,pub\u date\uu month=date.month)作为Model.objects.dates中的date('pub\u date','month')]
将为您提供每个月的(日期,查询集)
元组列表(假设您的字段名为pub\u date
)。例如,如果您想将其用于月份,[(date,Model.objects.filter(pub\u date\uuu year=date.year,pub\u date\uuu month=date.month))用于Model.objects.dates('pub\u date','month')]
将为您提供每个月的(date,QuerySet)
元组列表(假设您的字段名为pub\u date
)。我有一个想法,使用原始MySQL查询创建一个新字段(smth如YYYY_-MM),然后使用map
填充存档变量。我有一个想法,使用原始MySQL查询创建一个新字段(smth如YYYY_-MM),然后使用map
填充存档变量。