Nếu bạn có một số lượng lớn các đối tượng, điều này có thể (đôi khi) nhanh hơn nhiều:
try:
orgs[0]
# If you get here, it exists...
except IndexError:
# Doesn't exist!
Trong một dự án tôi đang làm việc với một cơ sở dữ liệu khổng lồ, not orgs
hơn 400 ms và orgs.count()
là 250ms. Trong các trường hợp sử dụng phổ biến nhất của tôi (những trường hợp có kết quả), kỹ thuật này thường giảm xuống dưới 20ms. (Một trường hợp tôi tìm thấy, đó là 6.)
Tất nhiên, có thể lâu hơn nhiều, tùy thuộc vào việc cơ sở dữ liệu phải tìm bao xa để tìm kết quả. Hoặc thậm chí nhanh hơn, nếu nó tìm thấy một cách nhanh chóng; YMMV.
EDIT: Đây sẽ thường chậm hơn so với orgs.count()
nếu kết quả là không tìm thấy, đặc biệt là nếu điều kiện bạn đang lọc trên là một trong những hiếm; do đó, nó đặc biệt hữu ích trong các chức năng xem trong đó bạn cần đảm bảo chế độ xem tồn tại hoặc ném http404. (Ở đâu, người ta sẽ hy vọng, mọi người đang yêu cầu các URL tồn tại thường xuyên hơn không.)