Django verifica se existe alguma existência para uma consulta


Respostas:


87

Use count():

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

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

A vantagem sobre, por exemplo len(), é que o QuerySet ainda não foi avaliado:

count()executa uma SELECT COUNT(*)operação nos bastidores, portanto, você deve sempre usar em count() vez de carregar todo o registro em objetos Python e chamar len() o resultado.

Tendo isso em mente, vale a pena ler quando QuerySets são avaliados .


Se você usar get(), por exemplo scorm.objects.get(pk=someid), e o objeto não existir, uma ObjectDoesNotExistexceção é levantada:

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

Atualização: também é possível usar exists():

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

Retorna Truese o QuerySet contiver algum resultado e, Falsecaso contrário. Isso tenta realizar a consulta da maneira mais simples e rápida possível, mas executa quase a mesma consulta que uma consulta QuerySet normal.


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

@Alex Lebedev: Sim, este método estará disponível no Django 1.2. Obrigado.
Felix Kling


0

isso funcionou para mim!

if some_queryset.objects.all (). exists (): print ("esta tabela não está vazia")

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.