Django paresseux QuerySet et pagination
J'ai lu ici que Django querysets sont paresseux, il ne sera pas évalué jusqu'à ce qu'il est imprimé. J'ai fait un simple pagination à l'aide de l'django intégré dans la pagination. Je ne savais pas que il y avait des applications déjà comme "django-pagination", et "django sans fin" qui fait ce travail pendant.
De toute façon je me demande si le QuerySet est toujours paresseux quand j'ai par exemple ce faire
entries = Entry.objects.filter(...)
paginator = Paginator(entries, 10)
output = paginator.page(page)
return HttpResponse(output)
Et cette partie est appelée à chaque fois que je veux obtenir quelle que soit la page que j'ai actuellement je veux voir.
J'ai besoin de savoir car je ne veux pas inutilement la charge de la base de données.
source d'informationauteur starcorn
Vous devez vous connecter pour publier un commentaire.
Si vous voulez voir où se produisent, importent
django.db.connection
et inspecterqueries
Permet de créer le paginator, et voir si toutes les requêtes se produire:
Aucun n'a encore.
De la création de la page a produit une requête pour compter le nombre d'entrées dans le queryset. Les entrées n'ont pas été récupérées encore.
Attribuer la page des objets à la variable "objets":
Cela n'est pas encore causé les entrées qui doivent être récupérés.
Générer la
HttpResponse
à partir de la liste d'objetsEnfin, les inscriptions ont été récupérés.
Il est. De Django reinhardt, de la pagination utilise les mêmes règles d'optimisations qui s'appliquent à querysets.
Cela signifie qu'il va commencer à évaluer sur
return HttpResponse(output)