下午好,请告诉我如何按字母升序排列数据!但条件是具有值""的条目在列表的末尾.以下是代码中传达含义的部分-
def order_by_custom_fields(self, ordering: list):
result = []
field_empty_first = Case(
When(field__exact='', then=0),
default=1
)
for field in ('field'):
if field in ordering:
result.append(field_empty_first)
return result
def get_ordering(self, request, queryset, view):
params = request.query_params.get(self.ordering_param)
if params:
fields = [param.strip() for param in params.split(',')]
ordering = self.remove_invalid_fields(queryset, fields, view, request)
else:
ordering = []
ordering.extend(self.order_by_custom_fields(ordering))
return tuple(
self.filters_custom_ordering(ordering)
)
def filter_queryset(self, request, queryset, view):
ordering = self.get_ordering(request, queryset, view)
if ordering:
return queryset.order_by(*ordering)
return queryset
此选项显示的记录末尾带有‘’,但顺序不是按字母顺序排列
但这是必要的
Update:也许有一些类似的 Nulls_last=只有‘’值记录时为True?也许我在寻找这个选项时误读了文档. Update2:显然,您必须将数据库中的字段从‘’更改为空