以小写倒序排列 QuerySet

ordering QuerySet in lowercase reverse order

我的 django 项目在 views.py 中定义了以下函数。我遇到的唯一问题是按小写顺序(即 Lower())和相反顺序(即“-title”而不是 'title')对所有书籍进行排序。我可以按一个或另一个订购,但不能同时订购。

我收到以下错误:

Cannot resolve keyword '-title' into field. Choices are: author, date_modified, title

def book_list_title(request):

    all_entries = Book.objects.all().order_by(Lower('-title'))
    books_list=[]

    //Do stuff to create a proper list of books

    return render(request,'books_app/books_list.html', {'books_list':books_list})

尝试使用 Query Expressions

from django.db.models import Func, F

Book.objects.all().annotate(title_lower=Func(F('title'), function='LOWER')).order_by('-title_lower')

按照 documentation of order_by 你应该可以在 Lower() 上使用 desc():

all_entries = Book.objects.all().order_by(Lower('title').desc())