Resumo : neste tutorial, você aprenderá como usar o QuerySet
exists()
método Django para verificar se a
contém alguma linha.QuerySet
Introdução ao método Django QuerySet existe()
Às vezes, você deseja verificar se uma consulta contém alguma linha. Para fazer isso, você usa o exists()
método do QuerySet
objeto.
O exists()
método retorna True
se QuerySet
contiver alguma linha ou False
não.
Nos bastidores, exists()
tentará realizar a consulta da maneira mais rápida possível. No entanto, a consulta será quase idêntica a uma QuerySet
consulta normal.
Suponha que você tenha um QuerySet
e queira verificar se ele possui algum objeto. Em vez de fazer isso:
if query_set:
print('the queryset has at least one object')
Linguagem de código: Python ( python )
…você deveria usar o exists()
porque é um pouco mais rápido:
if query_set.exists():
print('the queryset has at least one object')
Linguagem de código: Python ( python )
Django 4.1 adicionou o que é uma versão assíncrona do .a
exists()
exists()
Exemplo do método Django exist()
Usaremos o Employee
modelo para a demonstração. O Employee
modelo é mapeado para a hr_employee
tabela no banco de dados:
Primeiro, execute o shell_plus
comando:
python manage.py shell_plus
Linguagem de código: texto simples ( texto simples )
Em segundo lugar, encontre os funcionários cujos nomes começam com a letra J
:
>>> Employee.objects.filter(first_name__startswith='J').exists()
SELECT 1 AS "a"
FROM "hr_employee"
WHERE "hr_employee"."first_name"::text LIKE 'J%'
LIMIT 1
Execution time: 0.000000s [Database: default]
True
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Observe que o Django gerou o SQL baseado no PostgreSQL. Se você usar outros bancos de dados, poderá ver uma instrução SQL ligeiramente diferente.
Neste exemplo, o exists()
método retorna True. Ele seleciona apenas a primeira linha para determinar se QuerySet
contém alguma linha.
Se você não usar o exists()
método, QuerySet
obterá todas as linhas da hr_employee
tabela:
>>> qs = Employee.objects.filter(first_name__startswith='J')
>>> print(qs.query)
SELECT "hr_employee"."id",
"hr_employee"."first_name",
"hr_employee"."last_name",
"hr_employee"."contact_id",
"hr_employee"."department_id"
FROM "hr_employee"
WHERE "hr_employee"."first_name"::text LIKE J%
ORDER BY "hr_employee"."first_name" ASC,
"hr_employee"."last_name" ASC
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Resumo
- Use o método Django
exists()
para verificar se aQuerySet
contém alguma linha.