在 django Rest 框架中重命名相关字段排序过滤器

jro*_*aud 6 django django-rest-framework

在 django Rest 框架 APIView 中,我们使用与搜索过滤器相同的方法指定排序字段,因此我们可以使用相关名称指定排序。

ordering_fields = ('username', 'email', 'profile__profession')
Run Code Online (Sandbox Code Playgroud)

路线看起来像这样:https://example.com/route?ordering=profile__profession

然而,我们宁愿避免在 api 中显示模型之间的关系,然后指定而profession不是profile__profession. 例如https://example.com/route?ordering=profession

是否可以在不执行 APIView's中实现排序的情况下实现此目的def get_queryset(self):

jro*_*aud 8

只需稍加改动即可实现def get_queryset(self)

def get_queryset(self):
    query = super(UserListView, self).get_queryset().annotate(profession=F('profile__profession'))
    return query
Run Code Online (Sandbox Code Playgroud)