Menu
CoddyTech

Lấy tất cả và lấy một

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

Trước khi một trang có thể hiển thị sách, code của bạn phải đọc dữ liệu sách. Book.objects.all() trả về một QuerySet, một đối tượng giống danh sách mà bạn có thể lặp qua; mỗi mục là một Book với các trường của nó làm thuộc tính. get() lấy chính xác một hàng:

for book in Book.objects.all():
    print(book.author, book.year)

emma = Book.objects.get(title="Emma")
print(emma.year)   # 1815

get() cần một kết quả khớp. Không có kết quả nào sẽ gây ra Book.DoesNotExist, còn có nhiều kết quả sẽ gây ra Book.MultipleObjectsReturned. Bạn xử lý các ngoại lệ này như mọi ngoại lệ khác. Hai cuốn sách ở đây là của Jane Austen:

try:
    Book.objects.get(author="Jane Austen")
except Book.MultipleObjectsReturned:
    print("More than one")

Nếu không được xử lý, ngoại lệ sẽ khiến tập lệnh dừng tại dòng đó.

challenge icon

Thử thách

Dễ

Viết lại explore.py:

  1. In tiêu đề của mỗi cuốn sách, mỗi tiêu đề trên một dòng.
  2. Lấy Dune, rồi in Dune costs và giá của sách: Dune costs 9.99.
  3. Tìm Ulysses, cuốn sách không có trên kệ, rồi in Ulysses is not on the shelf thay vì để chương trình gặp lỗi.

Nhấn Chạy: Console liệt kê chín tiêu đề, rồi đến hai câu.

Tự làm thử

from books.models import Book

# 1. In ra tên của từng cuốn sách, mỗi dòng một tên.

# 2. Lấy Dune và in ra giá của cuốn sách đó.

# 3. Tìm Ulysses.
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

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

Tự luyện tập: Playground Django