Группируйте все объекты по годам
У меня было 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}]}