fix: base ComplexQueryMixin 默认null值排最后

This commit is contained in:
caoqianming 2025-08-21 09:24:14 +08:00
parent 0cf04c50b3
commit 05955abd9c
1 changed files with 6 additions and 1 deletions

View File

@ -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)