Menu
CoddyTech

Sắp xếp hàng

Thuộc phần Model và trang quản trị trong hành trình Django của Coddy. Bài học 11 trên 23.

Tìm cuốn sách rẻ nhất, mới nhất hoặc tất cả nhan đề theo thứ tự từ cũ nhất đến mới nhất đều cần sắp xếp sách trước. order_by() sắp xếp một QuerySet theo một trường, còn ordering trong Meta làm việc đó cho tất cả sách; dấu trừ sắp xếp từ cao xuống thấp. first() trả về hàng đầu tiên hoặc None nếu không có hàng nào, vì vậy khác với get(), phương thức này không bao giờ phát sinh ngoại lệ:

Book.objects.order_by("-year").first()   # <Book: SPQR by Mary Beard>
Book.objects.order_by("-price").values_list("author", flat=True)
# <QuerySet ['Mary Beard', 'Umberto Eco', ...]>

values_list("author", flat=True) bỏ qua các đối tượng Book và trả về chính các giá trị: 'Mary Beard'. Nếu không có flat=True, mỗi giá trị sẽ nằm trong một tuple có một phần tử: ('Mary Beard',).

challenge icon

Thử thách

Trung bình

Viết lại explore.py để in ra hai dòng:

  1. Cheapest: và tiêu đề của cuốn sách có giá thấp nhất.
  2. Titles by year: và danh sách tất cả tiêu đề, từ sách cũ nhất đến mới nhất. In ra chính danh sách đó.

Nhấn Chạy: Bảng điều khiển hiển thị Cheapest: Pride and Prejudice, sau đó là Titles by year: ['Pride and Prejudice', 'Emma', 'The Murder of Roger Ackroyd', 'The Hobbit', 'Foundation', 'Dune', 'The Name of the Rose', 'Neuromancer', 'SPQR'].

Tự làm thử

from books.models import Book

# 1. Rẻ nhất: tên của cuốn sách rẻ nhất

# 2. Tên sách theo năm: danh sách tên của tất cả các cuốn sách, bắt đầu từ cuốn cũ nhất

Tất cả bài học trong Model và trang quản trị

Tự luyện tập: Playground Django