Django controlla l'esistenza di una query


Risposte:


87

Usa count():

sc=scorm.objects.filter(Header__id=qp.id)

if sc.count() > 0:
   ...

Il vantaggio rispetto ad esempio len()è che il QuerySet non è ancora valutato:

count()esegue un SELECT COUNT(*)dietro le quinte, quindi dovresti sempre usare count() piuttosto che caricare tutto il record negli oggetti Python e chiamare len() il risultato.

Tenendo presente questo, può valere la pena leggere quando vengono valutati i set di query .


Se usi get(), ad esempio scorm.objects.get(pk=someid), e l'oggetto non esiste, ObjectDoesNotExistviene sollevata un'eccezione:

from django.core.exceptions import ObjectDoesNotExist
try:
    sc = scorm.objects.get(pk=someid)
except ObjectDoesNotExist:
    print ...

Aggiornamento: è anche possibile utilizzare exists():

if scorm.objects.filter(Header__id=qp.id).exists():
    ....

Restituisce Truese QuerySet contiene risultati e in Falsecaso contrario. Questo tenta di eseguire la query nel modo più semplice e veloce possibile, ma esegue quasi la stessa query di una normale query QuerySet.


51
if scorm.objects.filter(Header__id=qp.id).exists()
Alexander Lebedev

@Alex Lebedev: Sì, questo metodo sarà disponibile in Django 1.2. Grazie.
Felix Kling


0

questo ha funzionato per me!

if some_queryset.objects.all (). exist (): print ("questa tabella non è vuota")

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.