Un conjunto de consultas o “QuerySet” en Django es una colección de objetos de un tipo de modelo de base de datos determinado. A través de un QuerySet, puedes filtrar los resultados de la base de datos, ordenarlos, agregarles, etc., esencialmente todas las operaciones de base de datos que puedes imaginar. Los QuerySets son perezosos, lo que significa que no se ejecutan hasta que necesitas el resultado.
Por ejemplo, si tienes un modelo de blog, puedes obtener todos los blog posts publicados con el QuerySet `Blog.objects.all()`. Para filtrar esta lista y obtener solo los blog posts publicados este año, puedes usar `Blog.objects.filter(pub_date__year=2021)`.
Un QuerySet se evalúa cuando lo iteras (por ejemplo, con un loop for), cuando lo divides (por ejemplo, con slicing de Python) o cuando lo repruebas evaluándolo con bool(). Por ejemplo, si usas un QuerySet en un template de Django, el modelo de base de datos se consulta y se extraen los datos.
También puedes encadenar consultas para obtener una especificidad aún mayor. Por ejemplo, puedes obtener todos los blog posts de 2021 que también contienen la palabra clave “Django” usando `Blog.objects.filter(pub_date__year=2021, title__contains=‘Django’)`.
Algunas consultas complejas pueden requerir el uso de la función `annotate()`, que agrega valores calculados a cada objeto en un QuerySet. Por ejemplo, si los blog posts tienen comentarios y quieres obtener una cuenta de comentarios para cada post, puedes hacer `Blog.objects.annotate(Count(‘comments’))`.
El uso de conjuntos de consultas está bien documentado en la documentación oficial de Django, que debería ser la fuente principal de información. También hay muchos tutoriales y recursos en línea disponibles, como “Django for Beginners” y “Real Python”.
Fuentes:
1. “Making Queries” – Django documentation (https://docs.djangoproject.com/en/3.1/topics/db/queries/)
2. “Advanced Querying: Complex Lookups with Q” – Django documentation (https://docs.djangoproject.com/en/3.1/topics/db/queries/#complex-lookups-with-q).
3. “Django for Beginners” – William S. Vincent.
4. “Real Python” (https://realpython.com/tutorials/django/).