Django自定义查询集按两个字段排序
我需要根据两个不同的因素对Django管理员变更列表视图的查询集进行排序:订单时间和状态 排序时,结果查询集应按降序时间排序,所有项目(Django自定义查询集按两个字段排序,django,django-admin,django-queryset,Django,Django Admin,Django Queryset,我需要根据两个不同的因素对Django管理员变更列表视图的查询集进行排序:订单时间和状态 排序时,结果查询集应按降序时间排序,所有项目(item.status==3)位于列表底部。本质上,我试图将所有已完成的订单推到列表的底部,而不管它们的订单\ u时间 这就是模型的外观: def Order(models.Model); order_time = models.DateTimeField(null=True) status = models.PositiveSmallIntegerFi
item.status==3
)位于列表底部。本质上,我试图将所有已完成的订单推到列表的底部,而不管它们的订单\ u时间
这就是模型的外观:
def Order(models.Model);
order_time = models.DateTimeField(null=True)
status = models.PositiveSmallIntegerField(choices=ORDER_STATUS, default=ORDER_RECEIVED)
我在将queryset与itertools.chain组合时遇到了麻烦,但由于我是为django更改列表视图执行此操作,因此我特别需要返回queryset
我可以用经理来做这个吗?或者,它们是执行定制SQL的一种方式,从而对qs进行相应的预排序
下面是order queryset的示例:
ORDER ORDER_TIME STATUS
3 12/3 2
8 12/5 2
1 12/6 1
7 12/2 3
10 11/12 3
订单时间状态
3 12/3 2
8 12/5 2
1 12/6 1
7 12/2 3
10 11/12 3
模型的元选项,将给出如下内容:
class Order(models.Model);
order_time = models.DateTimeField(null=True)
status = models.PositiveSmallIntegerField(choices=ORDER_STATUS, default=ORDER_RECEIVED)
class Meta:
ordering = ('status', 'order_time')
模型的元选项,将给出如下内容:
class Order(models.Model);
order_time = models.DateTimeField(null=True)
status = models.PositiveSmallIntegerField(choices=ORDER_STATUS, default=ORDER_RECEIVED)
class Meta:
ordering = ('status', 'order_time')
为这些选择做一个模型怎么样
def Status(models.Model):
# You could put in an 'id' or 'code' field to match up to your current status codes properly
value = models.CharField(max_length=20)
importance = models.IntegerField()
然后将您的模型更改为:
class Order(models.Model);
order_time = models.DateTimeField(null=True)
status = models.ForeignKey('Status')
class Meta:
ordering = ('status__importance', 'order_time')
创建您的状态模型并根据需要设置重要性字段,在您的示例中,将状态1和2的重要性设置为相等(如5),并将状态3的重要性设置为“更重”(如10)。这将按重要性,然后按时间对顺序进行分组,因此具有相同重要性的状态将被分组在一起。如何为选择创建一个模型
def Status(models.Model):
# You could put in an 'id' or 'code' field to match up to your current status codes properly
value = models.CharField(max_length=20)
importance = models.IntegerField()
然后将您的模型更改为:
class Order(models.Model);
order_time = models.DateTimeField(null=True)
status = models.ForeignKey('Status')
class Meta:
ordering = ('status__importance', 'order_time')
创建您的状态模型并根据需要设置重要性字段,在您的示例中,将状态1和2的重要性设置为相等(如5),并将状态3的重要性设置为“更重”(如10)。这将按重要性和时间对顺序进行分组,因此具有相同重要性的状态将被分组在一起。谢谢,但我不确定这是否有帮助。据我所知,订购选项将导致我的订单先按状态排序,然后按订购时间排序。我需要的是按订单时间对订单进行排序,并且只将那些订单附加到列表底部,这些订单的状态为
order\ucompleted
谢谢,但我不确定这是否对我有帮助。据我所知,订购选项将导致我的订单先按状态排序,然后按订购时间排序。我需要的是按订单时间对订单进行排序,并且只将那些状态为order\uofcompleted