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) # 1815get() 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 đó.
Thử thách
DễViết lại explore.py:
- In tiêu đề của mỗi cuốn sách, mỗi tiêu đề trên một dòng.
- Lấy
Dune, rồi inDune costsvà giá của sách:Dune costs 9.99. - Tìm
Ulysses, cuốn sách không có trên kệ, rồi inUlysses is not on the shelfthay 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.
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