diff --git a/apps/utils/mixins.py b/apps/utils/mixins.py index ff89c61d..d19bc326 100755 --- a/apps/utils/mixins.py +++ b/apps/utils/mixins.py @@ -18,6 +18,7 @@ from drf_yasg import openapi from apps.utils.serializers import PkSerializer from rest_framework.decorators import action from apps.utils.serializers import ComplexSerializer +from django.db.models import F # 实例化myLogger myLogger = logging.getLogger('log') @@ -267,7 +268,11 @@ class ComplexQueryMixin: if isinstance(ordering, str): ordering = ordering.split(',') if ordering: - new_qs = new_qs.order_by(*ordering) + for item in ordering: + if item.startswith('-'): + new_qs = new_qs.order_by(F(item[1:]).desc(nulls_last=True)) + else: + new_qs = new_qs.order_by(item) page = self.paginate_queryset(new_qs) if page is not None: serializer = self.get_serializer(page, many=True)