080:【Django數據庫】QuerySet API詳解-order_by:


QuerySet API詳解-order_by:

order_by指定將查詢的結果根據某個字段進行排序。如果要倒敘排序,那么可以在這個字段的前面加一個負號。示例代碼如下:

    # 時間從前往回排:
    # orders = BookOrder.objects.order_by("create_time")
    # 時間從后往前排(與上面相反):
    orders = BookOrder.objects.order_by("-create_time")
    # 時間從后往前排,如果時間相同再按照價格排:
    # orders = BookOrder.objects.order_by("-create_time", "price")
    
    # 根據訂單圖書的評分進行排序:
    # orders = BookOrder.objects.order_by("book__rating")
    # 根據圖書銷量進行排序:
    orders = Book.objects.annotate(book_sum=Count("bookorder")).order_by("book_sum")   # 這里的bookorder和bookorder__id是一樣的
    for item in orders:
        print(item.id,  item.name, item.book_sum)
    return HttpResponse("success")

一定要注意的一點是,多個order_by,會把前面排序的規則給打亂,而使用后面的排序方式。比如以下代碼:

orders = BookOrder.objects.order_by("-create_time").order_by("price"))    # 不要寫成如下格式:

它只會根據作者的名字進行排序,而不是使用文章的創建時間。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM