En un APIView de django rest framework, especificamos el orden de los campos usando el mismo método que los filtros de búsqueda y, por lo tanto, podemos especificar el orden usando nombres relacionados.
ordering_fields = ('username', 'email', 'profile__profession') La ruta se vería así: https://example.com/route?ordering=profile__profession
Sin embargo, preferimos evitar mostrar la relación entre los modelos en la API y luego especificar profession en lugar de profile__profession . Como https://example.com/route?ordering=profession
¿Se puede lograr esto sin tener que implementar la clasificación en la definición de APIView def get_queryset(self): ?
Se puede lograr con un cambio menor en def get_queryset(self) .
def get_queryset(self): query = super(UserListView, self).get_queryset().annotate(profession=F('profile__profession')) return queryTendrá que escribir su propio OrderingFilter basado en el marco REST de Django anulando get_ordering y usando un diccionario para asignar el "nombre corto" a la cadena completa del conjunto de consultas.