Django模板展示数据库内容如何按updated_at日期字段排序
实现方法
Python 的 list.sort() 方法原生支持时间类型的排序,逻辑和整数排序完全一致,你只需要调整排序key的取值即可,分两种常见场景处理:
场景1:接口返回的 updated_at 为ISO标准时间字符串/时间戳(绝大多数情况)
ISO格式的时间字符串(比如 2024-06-15T14:30:00Z)的字典序和时间先后顺序完全匹配,直接取值作为排序key即可,无需额外转换:
# 修改排序规则函数,取updated_at字段 def take_updated_at(elem): return elem['flow_phase']['updated_at'] def phase_details(request, batch_pk): ph_details_url = API_HOST + "/api/phase_details_full/?batch=" + str(batch_pk) answer = requests.get(ph_details_url).json() ph_details = answer['results'] # 按updated_at升序排序(旧更新的在前,新更新的在后) ph_details.sort(key=take_updated_at) # 如果需要最新更新的排在最前面,用下面的写法加reverse参数 # ph_details.sort(key=take_updated_at, reverse=True) rendered_page = render(request, 'batches_phases/consumer/phase_details.html', {'ph_details': ph_details}) return rendered_page
场景2:接口返回非标准格式的时间字符串
如果时间格式不是ISO标准(比如 2024-06-15 14:30:00),可以先解析为datetime类型再排序:
# 导入datetime模块 from datetime import datetime # 修改排序规则函数,先解析时间再返回 def take_updated_at(elem): # 第二个参数的格式要和你接口返回的时间字符串格式完全匹配 return datetime.strptime(elem['flow_phase']['updated_at'], "%Y-%m-%d %H:%M:%S") # sort调用方式和场景1完全一致
内容的提问来源于stack exchange,提问作者searcher__dm01
相关产品推荐
相关产品推荐

