2015-11-03 131 views
1

我必须在我的代码来完成客户订单,自定义排序在Django

考虑下面如:

class Car(models.Model):  
    type 
    brand 

每当我使用的品牌做订单,我得到下面的查询设置

cars = ["Benz","BMW","Ford","Honda","Suzuki"] 

我需要按照品牌进行订购,其中“宝马”应该总是像下面一样进入,如下查询集,

cars = ["Benz","Ford","Honda","Suzuki", "BMW"] 

注意:我不想使用/将其转换为列表。我需要在这个命令之后做一些queryset操作(比如values_list)。

+1

您必须使用自定义SQL。看到这个答案:http://stackoverflow.com/a/18238896/3224008 – Leistungsabfall

+0

宝马最后的逻辑是什么?还是仅仅是个人喜好? – Sayse

+2

在您的模型中添加一个额外的域作为go_last,然后通过go_last订购,然后品牌 – Serjik

回答

2

你可以尝试做它喜欢这里:

https://stackoverflow.com/a/2176471/4971083

它是通过在Django特定值排序您记录的解决方案。

car = Car.objects.filter(product__id=product_id).extra(
     select={'is_top': " brand='BMW'"}) 
car = car.extra(order_by = ['is_top'])