ใน django วิธีตรวจสอบว่ามีรายการสำหรับแบบสอบถามหรือไม่
sc=scorm.objects.filter(Header__id=qp.id)
นี่คือวิธีการทำใน php
if(mysql_num_rows($resultn)) {
// True condition
}
else {
// False condition
}
ใน django วิธีตรวจสอบว่ามีรายการสำหรับแบบสอบถามหรือไม่
sc=scorm.objects.filter(Header__id=qp.id)
นี่คือวิธีการทำใน php
if(mysql_num_rows($resultn)) {
// True condition
}
else {
// False condition
}
คำตอบ:
ใช้count()
:
sc=scorm.objects.filter(Header__id=qp.id)
if sc.count() > 0:
...
ข้อดีของเช่นlen()
คือ QuerySet ยังไม่ได้รับการประเมิน:
count()
ดำเนินการSELECT COUNT(*)
เบื้องหลังดังนั้นคุณควรใช้count()
แทนที่จะโหลดบันทึกทั้งหมดลงในออบเจ็กต์ Python และเรียกlen()
ใช้ผลลัพธ์
เมื่อคำนึงถึงสิ่งนี้เมื่อมีการประเมิน QuerySetsจึงควรค่าแก่การอ่าน
หากคุณใช้get()
เช่นscorm.objects.get(pk=someid)
และไม่มีวัตถุObjectDoesNotExist
ข้อยกเว้นจะเพิ่มขึ้น:
from django.core.exceptions import ObjectDoesNotExist
try:
sc = scorm.objects.get(pk=someid)
except ObjectDoesNotExist:
print ...
อัปเดต:
ยังสามารถใช้exists()
:
if scorm.objects.filter(Header__id=qp.id).exists():
....
ส่งคืน
True
หาก QuerySet มีผลลัพธ์ใด ๆ และFalse
ถ้าไม่มี สิ่งนี้พยายามดำเนินการสืบค้นด้วยวิธีที่ง่ายและเร็วที่สุดเท่าที่จะเป็นไปได้ แต่จะดำเนินการแบบสอบถามเกือบเหมือนกับแบบสอบถาม QuerySet ปกติ
if scorm.objects.filter(Header__id=qp.id).exists()
ตั้งแต่ Django 1.2 คุณสามารถใช้exists()
:
https://docs.djangoproject.com/en/dev/ref/models/querysets/#exists
if some_queryset.filter(pk=entity_id).exists():
print("Entry contained in queryset")
.objects.get(pk=...)
เส้นทางด้วย
สิ่งนี้ได้ผลสำหรับฉัน!
if some_queryset.objects.all (). มีอยู่ (): พิมพ์ ("ตารางนี้ไม่ว่างเปล่า")