2015-11-03 113 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'])