Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

201
Vistas
¿Cuándo se ejecutan Django Querysets en la vista?

Leí los documentos de Querysets Django sobre querysets son perezosos, pero todavía estoy un poco confundido aquí.

Entonces, en mi opinión, configuré un conjunto de consultas para una variable como esa

 players = Players.objects.filter(team=team)

Más tarde, tengo un mecanismo de clasificación que puedo aplicar

 sort = '-player_last_name' if pts > 20: players = players.filter(pts__gte = pts).order_by(sort) else: players = players.filter(pts__lte = pts).order_by(sort) if ast < 5: players = players.filter(asts__lte = ast).order_by(sort) else: players = players.filter(asts__gte = ast).order_by(sort) context = {players: players) return render(request, '2021-2022/allstars.html', context)

Lo que quiero saber es, ¿cuándo se evalúa el conjunto de consultas de los jugadores? ¿Es cuando se representa cada página o cada vez que asigno el conjunto de consultas a una variable? Porque si es lo primero, entonces solo puedo aplicar la cadena .order_by(sort) y las aplicaciones anteriores son redundantes.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

QuerySet se evalúan si " consume " el conjunto de consultas. Usted consume un conjunto de consultas enumerando sobre él, llame a.get(…) , .exists(…) , .aggregate(…) o .count(…) , verifique la veracidad (por ejemplo con if myqueryset: o bool(queryset) , o llame a len(…) sobre él, etc. Como regla general, se evalúa si realiza una acción en él de modo que el resultado ya no sea un QuerySet .

Si enumera sobre él o llama a len(…) el resultado se almacena en caché en el QuerySet , por lo que llamarlo por segunda vez o enumerarlo después de haber llamado a len(…) no hará otro viaje a la base de datos.

En este caso específico, ninguno de los QuerySet se evalúa antes de realizar la llamada a la función render(…) . Si en la plantilla, por ejemplo, usa {% if players %} , o {% for players %} , {{ players|length }} , o {{ players.exists }} , entonces evaluará el conjunto de consultas.

over 4 years ago · Santiago Trujillo Denunciar

0

Las consultas de Django están diseñadas para ser "perezosas", es decir. no ejecutan la consulta de la base de datos hasta que algo solicita datos reales. Las consultas se pueden modificar mediante la adición de filtrado y otras funciones similares.

Por ejemplo, el siguiente código solicita todos los objetos TeamMember cuando la cadena de búsqueda es 'all' , pero de lo contrario agrega un filtro para restringir los nombres a aquellos que coincidan con la búsqueda dada.

 squad_list = TeamMember.objects(state__in={"Hired", "Joined", "Staff", "Recruiting"}) if squadname != 'all': squad_list = squad_list(squad__icontains=squadname.lower())

Cuando la consulta de la lista de squadlist finalmente se ejecute, recuperará el registro requerido. Dopes esta ayuda?

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda