Django sort export csv by date most recent first
Я новичок в django, я пытаюсь сортировать мои csv по дате в моем представлении. Я могу экспортировать мои расписания в csv и отобразить их в моем представлении, но я не знаю, как отсортировать их по дате по самому последнему. Но в моем представлении, а не в моем каталоге.
В моем шаблоне это выглядит следующим образом :
- export_21_11_2021-151707.csv
- export_22_11_2021-151707.csv
- export_23_11_2021-151707.csv
Но я хочу отсортировать по дате самый последний следующим образом :
- export_23_11_2021-151707.csv
- export_22_11_2021-151707.csv
- export_21_11_2021-151707.csv
Моя функция экспорта
def vm_schedule_export():
timestr = time.strftime("%d_%m_%Y-%H%M%S")
schedules = VmSchedule.objects.all().values('schedule', 'action', 'dow',
'dom', 'mon', 'h', 'm',
'pause', 'vms__name')
media_url = settings.MEDIA_ROOT
if not os.path.exists(f'{media_url}appli'):
os.makedirs(f'{media_url}appli')
if not os.path.exists(f'{media_url}appli/vm'):
os.makedirs(f'{media_url}appli/vm')
if not os.path.exists(f'{media_url}'
f'appli/vm/schedule_export'):
os.makedirs(f'{media_url}appli/vm/schedule_export')
with open(
f'{media_url}appli/vm/schedule_export/export_' + timestr + '.csv',
mode='w', encoding='utf8') as csv_file:
fieldnames = ['nom', 'action', 'dow', 'dom', 'mon', 'h', 'm', 'pause',
'vms']
writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
writer.writeheader()
for k in range(schedules.count()):
writer.writerow({'nom': schedules[k]["schedule"],
'action': schedules[k]["action"],
'dow': schedules[k]["dow"],
'dom': schedules[k]["dom"],
'mon': schedules[k]["mon"],
'h': schedules[k]["h"],
'm': schedules[k]["m"],
'pause': schedules[k]["pause"],
'vms': smart_str(schedules[k]["vms__name"])})
и где я показываю весь экспорт :
def vm_schedule_download(request):
media_url = settings.MEDIA_ROOT
if not os.path.exists(f'{media_url}appli'):
os.makedirs(f'{media_url}appli')
if not os.path.exists(f'{media_url}appli/vm'):
os.makedirs(f'{media_url}appli/vm')
if not os.path.exists(f'{media_url}'
f'appli/vm/schedule_export'):
os.makedirs(f'{media_url}appli/vm/schedule_export')
filenames = os.listdir(f'{media_url}appli/vm/schedule_export')
return render(request, 'appli/vm/vm_schedule_download.html',
{'filenames': filenames})
Мой шаблон :
{% for i in filenames %}
{{ i }}
{% endfor %}
Я нашел решение с помощью os.path.getmtime
.
Решение уже было найдено в этой теме stackoverflow.