Consultas Django

Consultar todos los elementos de un modelo.

all_entries = Entry.objects.all()

Filtrar por uno o varios atributos, se puede filtrar por fecha(year, month, day, …), si es mayor, mayor igual (gt, gte, lt, lte, …) leer más.

Entry.objects.filter(pub_date__year=2006)

Buscar un elemento con get().

entry = Entry.objects.get(pk=1)

«Anotaciones»

  • numero de mascotas por tipo, accedes con doble barra baja __count
  • número de entradas de diferentes blogs, tomas la función de agregación (Count()) y la igualas a un nombre que gustes (number_of_entries), y con ese nombre accedes al valor que querías calcular por cada elemento.
from django.db.models import Count

qs1 = Pet.objects.values('type').annotate(Count("type"))
#[(type: fish, type__count: 354), (type: dog, type__count: 375) ...]


qs2 = Blog.objects.annotate(number_of_entries=Count('entry'))
qs2[0].name
#'primer blog'
qs2[0].number_of_entries
#40 "publicaciones del primer blog"