Sử dụng count()
:
sc=scorm.objects.filter(Header__id=qp.id)
if sc.count() > 0:
...
Ưu điểm so với ví dụ: len()
QuerySet chưa được đánh giá:
count()
thực hiện SELECT COUNT(*)
hậu trường, vì vậy bạn nên luôn sử dụng count()
thay vì tải tất cả bản ghi vào các đối tượng Python và gọi len()
kết quả.
Lưu ý điều này, Khi các Bộ truy vấn được đánh giá có thể đáng đọc.
Nếu bạn sử dụng get()
, ví dụ scorm.objects.get(pk=someid)
, và đối tượng không tồn tại, một ObjectDoesNotExist
ngoại lệ sẽ được đưa ra:
from django.core.exceptions import ObjectDoesNotExist
try:
sc = scorm.objects.get(pk=someid)
except ObjectDoesNotExist:
print ...
Cập nhật:
cũng có thể sử dụng exists()
:
if scorm.objects.filter(Header__id=qp.id).exists():
....
Trả về True
nếu QuerySet chứa bất kỳ kết quả nào và False
nếu không. Điều này cố gắng thực hiện truy vấn theo cách đơn giản và nhanh nhất có thể, nhưng nó thực hiện gần giống như truy vấn QuerySet bình thường.