首页 > 解决方案 > 在按日期排序的模板中显示数据库内容

问题描述

我目前正在按 sequence_number 排序的模板中显示内容

#楷模:

class FlowPhase(models.Model):
    sequence_number = models.IntegerField(validators=[MinValueValidator(1)])
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

#viewset

# Function to define sort criteria
def take_seq_number(elem):
    return elem['flow_phase']['sequence_number']

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']  


    ph_details.sort(key=take_seq_number)  # <------ sorting by sequence number

    rendered_page = render(request, 'batches_phases/consumer/phase_details.html', {'ph_details': ph_details})
    return rendered_page

因此,我想在以updated_at排序的模板中显示 ph_details 的内容,而不是再按sequence_number 排序

关于如何在 python 中执行此操作的任何建议?在这种情况下,我相信变化只会在

ph_details.sort(key=take_seq_number)

def take_seq_number(elem):
     return elem['flow_phase']['sequence_number']

我的困难是因为 sequence_number 是整数,所以更容易排序。但是如何处理日期呢?

标签: pythondjango

解决方案


只需定义一个新的排序方法并将其作为函数的key参数传递sort()

就像是:

def sort_phase_updated_at(elem):
    return elem['flow_phase']['updated_at']

ph_details.sort(key=sort_phase_updated_at)

推荐阅读