2015-12-22 27 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

看起来像使用注释只会做你正在寻找的东西。 –