Python 如何按'排序对象;状态';Django中的变量
我试图找到一种方法,根据数据库对象的Python 如何按'排序对象;状态';Django中的变量,python,django,django-queryset,Python,Django,Django Queryset,我试图找到一种方法,根据数据库对象的状态变量按顺序显示数据库对象列表。该应用程序是一个订单跟踪应用程序。每个订单都有一个状态:“空闲”、“等待交货”、“准备提货”等。我想显示订单列表,按其状态排序。我已经有一个过滤器在工作,但我想知道是否有办法对整个订单列表进行排序,使“空闲”订单排在首位,然后是“等待交货”订单,等等。显然,我不能只将status添加到admin.py文件中的ordering,因为这样会按字母顺序排列状态 有人知道解决这个问题的简单方法吗?我肯定我只是想得太多了。如果您想在SQ
状态
变量按顺序显示数据库对象列表。该应用程序是一个订单跟踪应用程序。每个订单都有一个状态:“空闲”、“等待交货”、“准备提货”等。我想显示订单列表,按其状态排序。我已经有一个过滤器在工作,但我想知道是否有办法对整个订单列表进行排序,使“空闲”订单排在首位,然后是“等待交货”订单,等等。显然,我不能只将status
添加到admin.py
文件中的ordering
,因为这样会按字母顺序排列状态
有人知道解决这个问题的简单方法吗?我肯定我只是想得太多了。如果您想在SQL中排序,有两种方法可以实现这一点 创建一个将您的状态与数值链接的模型
class status (Model.model):
status = Model.CharField()
sort_order = Model.IntegerField()
您可以将此表与订单表合并,并按顺序排序
如果这看起来不实用,你可以考虑一个定制查询来为你排序。您可以使用
.extra
方法将其附加到orm方法。有关它的更多信息,请参见
我最后做的就是给每个状态名添加一个字母字符。因为我已经为每个状态提供了一个漂亮、简洁的详细名称,所以我认为它对可读性影响不大。我不能说这是世界上最好的解决方案,但我相信这是最简单的
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)
我曾想过使用你提到的索引作为你的第一点。但是,除非绝对必要,否则我不想向数据库中添加任何内容。我也没有真正遵循您提到的第二种方法,因为我对Python/Django还是相当陌生的。不会痛的;-)
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)