¿Cuál es el idioma recomendado para verificar si una consulta arrojó algún resultado?
Ejemplo:
orgs = Organisation.objects.filter(name__iexact = 'Fjuk inc')
# If any results
# Do this with the results without querying again.
# Else, do something else...
Supongo que hay varias formas diferentes de verificar esto, pero me gustaría saber cómo lo haría un usuario experimentado de Django. La mayoría de los ejemplos en los documentos simplemente ignoran el caso donde no se encontró nada ...
fuente
list
resultado si hay registros. El código allí llegará a la base de datos solo una vez. Si solíanexist()
ocount()
para verificar primero si va a haber registros devueltos, estarían presionando la base de datos dos veces (una para verificar, una para obtener los registros). Esta es una situación específica. No implica que, en el caso general , el método preferido para saber si una consulta devolverá registros es usar doif queryset:...
if not my_objects:
para demostrar que así es como lo hacen en los documentos. Todo lo demás es completamente irrelevante, así que no entiendo tu punto. También podrían hacer miles de consultas y aún sería totalmente irrelevante ya que este no es el punto de esta respuesta, con lo que dejo en claro que estoy de acuerdo.get_object_or_404
funciona, no una forma preferida de verificar si existe algún elemento en un conjunto de consultas. Hacer list () en un conjunto de consultas buscará todos los objetos en un conjunto de consultas, lo que sería peor que consultar dos veces si se devuelven muchas filas..exists()
es más eficiente si no se va a evaluar el qs.