没有对象时嵌套的序列化程序排序

时间:2015-12-22 07:47:16

标签: python django django-rest-framework

我使用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的元素,或者至少从查询集中删除它们(但仅在按stats的字段排序时)。

1 个答案:

答案 0 :(得分:1)

最好的办法是使用此SO问题中描述的注释():Django : Order by position ignoring NULL

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