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',).
Thử thách
Trung bìnhViết lại explore.py để in ra hai dòng:
Cheapest:và tiêu đề của cuốn sách có giá thấp nhất.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