gpt4 book ai didi

python - Django,如何按日期对模型进行分组?

转载 作者:行者123 更新时间:2023-12-03 14:14:51 24 4
gpt4 key购买 nike

假设我有 MyModelcreated_atname领域。 created_at是日期时间。

假设我有以下模型对象:

<id: 1, name: A, created_at: 04.06.2020T17:49>
<id: 2, name: B, created_at: 04.06.2020T18:49>
<id: 3, name: C, created_at: 05.06.2020T20:00>
<id: 4, name: D, created_at: 06.06.2020T19:20>
<id: 5, name: E, created_at: 06.06.2020T13:29>
<id: 6, name: F, created_at: 06.06.2020T12:55>

我想查询将按以下顺序返回给我这些模型:
[
04.06.2020: [<id: 1, name: A, created_at: 04.06.2020T17:49>, <id: 2, name: B, created_at: 04.06.2020T18:49>],
05.06.2020: [<id: 3, name: C, created_at: 05.06.2020T20:00>]
06.06.2020: [<id: 4, name: D, created_at: 06.06.2020T19:20>, <id: 5, name: E, created_at: 06.06.2020T13:29>, <id: 6, name: F, created_at: 06.06.2020T12:55>]
]

我想按 created_at 对所有模型进行分组字段,但仅使用 Date DateTime 的一部分 field 。我知道我可以通过使用 python 循环来获得那种结果,但是有没有 Django ORM 方法来解决这个问题?

最佳答案

ORM 本身无法返回模型列表,但您可以使用 itertools.groupby 为此,假设您首先在数据库级别订购数据集。

from itertools import groupby
from operator import attrgetter

from django.db.models.functions import TruncDate

queryset = MyModel.objects.annotate(
created_at_date=TruncDate('created_at'),
).order_by('created_at')
groupedset = groupby(queryset, attrgetter('created_at_date'))
然后,您将能够迭代 groupedset使用
for date, objects in groupedset:
...

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com