In 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(*)
を実行するため、すべてのレコードをPythonにロードするのではなく、常にcount()
を使用する必要がありますオブジェクトおよび結果の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():
....
_
QuerySetに結果が含まれている場合は
True
を返し、含まれていない場合はFalse
を返します。これは、可能な限り簡単かつ最速の方法でクエリを実行しようとしますが、通常のQuerySetクエリとほぼ同じクエリを実行します。
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")