2015-12-22 65 views
0

我使用DRF創建這樣的API視圖嵌套串行順序:當沒有對象

{ 
    "name": "some name", 
    "attribute1": "some attribute", 
    "attribute2": "some attribute", 
    "attribute3": "some attribute", 
    "attribute4": "some attribute", 
    "stats": { 
     "status": false, 
     "count": 0 
    } 
} 

stats場創建爲串行器(OneToOneField的型號),但有時也沒有在相關對象這個OneToOne關係如此statsnull

問題是我想通過f.e命令我的查詢集。 stats__count。此排序的升序正在工作。 count = 0處於開始狀態,而空值處於最後,但是當我想按降序對其進行排序時,我想在開始時具有此屬性的最大值。我得到所有的空值。

問題是:如何將這個元素與stats = null放在結果的末尾,或者至少將它們從queryset中刪除(但僅當從stats的字段排序時)。

回答

1

最好的辦法是使用註釋()在這太問題描述:Django : Order by position ignoring NULL

items = Item.objects.all().annotate(null_position=Count('position')).order_by('-null_position', 'position') 
+0

我無法查詢集刪除它,因爲他們也需要顯示。我想要的是,他們應該ommited而訂購, – Morishiri

+1

啊好吧,然後看看這個問題:http://stackoverflow.com/questions/5235209/django-order-by-position-ignoring-null –

+1

看起來像使用註釋只會做你正在尋找的東西。 –