Skip to main content
 首页 » 编程设计

python之如何通过 Django 中的 'status' 变量对对象进行排序

2025年05月04日30Terrylee

我正在尝试找到一种方法来根据数据库对象的 status 变量按顺序显示数据库对象列表。该应用程序是一个订单跟踪应用程序。每个订单都有一个状态:“空闲”、“等待交货”、“准备取货”等。我想显示订单列表,按状态排序。我已经有一个可用的过滤器,但我想知道是否有一种方法可以对整个订单列表进行排序,以便“空闲”订单位于最前面,然后是“等待交货”订单,依此类推。显然,我不能只将 status 添加到 admin.py 文件中的 ordering,因为这会按字母顺序对状态进行排序。

有人知道解决这个问题的简单方法吗?我确定我只是想多了这整件事..

请您参考如下方法:

我最后所做的就是为每个状态名称添加一个字母字符。因为我已经为每个状态取了一个漂亮、简洁的冗长名称,所以我认为它不会对可读性造成太大影响。我不能说这是世界上最好的解决方案,但我相信它是最简单的。

   STATUS_OF_ORDER = ( 
     ('A_IDLE', 'Not yet ordered'), 
     ('B_SHIP', 'Awaiting delivery'), 
     ('C_PICK', 'Ready for pickup'), 
     ('E_UNAV', 'Unavailable for order'), 
     ('D_BACK', 'Backordered - awaiting delivery'), 
     ('F_CANC', 'Canceled by customer'), 
     ('G_ARCH', 'Fulfilled'), 
   ) 
   status = models.CharField(max_length=6, choices=STATUS_OF_ORDER, 
                             default='A_IDLE', editable=False)