我有一個日期時間物件串列,這些物件從我的資料庫中附加到一個陣列中,并帶有一個名為 Django Recurrence 的附加庫。
我在 for 回圈中按如下方式附加它:
events = Events.objects.filter(...some conditions)
timeslots = []
for event in events:
for occurence in event.recurrences.between(context['today'], context['end']):
occurence_date = datetime.combine(occurence.date(), time(0, 0))
timeslots.append({
'start_date': occurence_date timedelta(hours=event.start_time.hour, minutes=event.start_time.minute),
'end_date': occurence_date timedelta(hours=event.end_time.hour, minutes=event.end_time.minute),
})
然后它會輸出它[{'start_date': datetime.datetime(2022, 3, 7, 14, 0), 'end_date': datetime.datetime(2022, 3, 7, 15, 0)}, {'start_date': datetime.datetime(2022, 3, 8, 14, 0), ... }]是偉大的。
事件回圈的一個副作用是,它會在所有事件發生之后添加其他事件,例如 3 月 1 日、3 月 5 日、3 月 10 日、3 月 2 日、3 月 4 日等。我想訂購它們到開始日期,所以我可以在我的模板中以正確的順序呈現它們。
謝謝
uj5u.com熱心網友回復:
如果要對字典串列進行排序,可以使用sorted,
但你必須通過key你想要排序的東西,像這樣:
sorted_timeslots = sorted(timeslots, key=lambda x: x['start_date'])
uj5u.com熱心網友回復:
您可以嘗試sorted使用兩個引數:一個可迭代物件和一個鍵。后者指示函式應如何對前一個引數(陣列)進行排序。我已經生成了一個更明確的示例:
timeslots = [{'start_date': datetime.datetime(2022, 3, 7, 14, 0), 'end_date': datetime.datetime(2022, 3, 7, 15, 0)},
{'start_date': datetime.datetime(2022, 3, 8, 14, 0) ,'end_date': datetime.datetime(2022, 3, 5, 14, 0)},
{'start_date': datetime.datetime(2022, 3, 10, 20, 0) ,'end_date': datetime.datetime(2022, 3, 7, 13, 0)},
{'start_date': datetime.datetime(2022, 3, 3, 20, 0) ,'end_date': datetime.datetime(2022, 3, 7, 11, 0)}
]
sorted(timeslots, key=lambda x: x["start_date"])
輸出
[{'end_date': datetime.datetime(2022, 3, 7, 11, 0),
'start_date': datetime.datetime(2022, 3, 3, 20, 0)},
{'end_date': datetime.datetime(2022, 3, 7, 15, 0),
'start_date': datetime.datetime(2022, 3, 7, 14, 0)},
{'end_date': datetime.datetime(2022, 3, 5, 14, 0),
'start_date': datetime.datetime(2022, 3, 8, 14, 0)},
{'end_date': datetime.datetime(2022, 3, 7, 13, 0),
'start_date': datetime.datetime(2022, 3, 10, 20, 0)}]
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/439081.html
