我使用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关系中没有关联对象,因此stats
为null
。
问题是我想按f.e订购我的查询集。 stats__count
。这种排序的升序是有效的。 count = 0
处于开始状态,空值处于结尾,但是当我想按降序对其进行排序时,我希望在开始时具有此属性的最大值。我取而代之的是所有的空值。
问题是:如何在结果的末尾放置带有stats = null
的元素,或者至少从查询集中删除它们(但仅在按stats
的字段排序时)。
答案 0 :(得分:1)
最好的办法是使用此SO问题中描述的注释():Django : Order by position ignoring NULL
items = Item.objects.all().annotate(null_position=Count('position')).order_by('-null_position', 'position')