Группируйте все объекты по годам

У меня было 3 объекта

[{u'criados': u'25/10/2022 00:50', u'arquivo': u'http://hml.static.detran.al.gov.br/media/infracoes/notificacoes/9.pdf', u'id': 1, u'tipo': u'NAI', u'slug': u'Teste-1'}, {u'criados': u'25/10/2022 23:54', u'arquivo': u'http://hml.static.detran.al.gov.br/media/infracoes/notificacoes/Profile.pdf', u'id': 2, u'tipo': u'NIP', u'slug': u'copa-06'}, {u'criados' : u'16/5/2020 21:25', u'arquivo': u'http://hml.static.detran.al.gov.br/media/infracoes/notificacoes/test.pdf', u'id' : 3, u'tipo: u'NIP', u'slug': u'test-02'}]

у этих объектов есть разные года и я хочу отобразить в html что-то вроде этого:

2022
 - Object 1
 - Object 2

2020
 - Object 3

помогите мне

если вы хотите сгруппировать объекты только в шаблоне, вы можете использовать {{regroup}} тег

ссылка: тег перегруппировки Django

Вы можете добиться группировки следующим образом (Вы все еще можете использовать вывод в шаблоне django)

from datetime import datetime

x = [
    {
        'criados': '25/10/2022 00:50',
        'arquivo': 'http://hml.static.detran.al.gov.br/media/infracoes/notificacoes/9.pdf',
        'id': 1,
        'tipo': 'NAI',
        'slug': 'Teste-1'
    },
    ...
]


for obj in x:
    # create a key that holds the year value
    obj["year"] = datetime.strptime(
        obj['criados'], "%d/%m/%Y %H:%M").date().year

# group obj by key 'year'
newObj = {
    year: [obj for obj in x if obj["year"] == year] for year in sorted([y["year"] for y in x], reverse=True)
}

print(newObj)
// output
{2022: [{'criados': '25/10/2022 00:50', 'arquivo': 'http://hml.static.detran.al.gov.br/media/infracoes/notificacoes/9.pdf', 'id': 1, 'tipo': 'NAI', 'slug': 'Teste-1', 'year': 2022}, {'criados': '25/10/2022 23:54', 'arquivo': 'http://hml.static.detran.al.gov.br/media/infracoes/notificacoes/Profile.pdf', 'id': 2, 'tipo': 'NIP', 'slug': 'copa-06', 'year': 2022}], 2020: [{'criados': '16/5/2020 21:25', 'arquivo': 'http://hml.static.detran.al.gov.br/media/infracoes/notificacoes/test.pdf', 'id': 3, 'tipo': 'NIP', 'slug': 'test-02', 'year': 2020}]}

Вернуться на верх