web-dev-qa-db-fra.com

Qu'est-ce qu'un Django QuerySet?

Quand je fais ça,

>>> b = Blog.objects.all()
>>> b

J'ai compris:

>>>[<Blog: Blog Title>,<Blog: Blog Tile>]

Lorsque je demande quel type b est,

>>> type(b)

J'ai compris:

>>> <class 'Django.db.models.query.QuerySet'>

Qu'est-ce que ça veut dire? S'agit-il d'un type de données comme dict, list, etc.?

Un exemple de la façon dont je peux construire une structure de données comme un QuerySet sera apprécié.

Je voudrais savoir comment Django construit cela QuerySet (les détails sanglants).

41
gath
20

Un Django queryset est comme son nom l'indique, fondamentalement une collection de requêtes (sql), dans votre exemple ci-dessus print(b.query) vous montrera la requête sql générée à partir de votre Django filter appels.

Étant donné que les ensembles de requêtes sont paresseux , la requête de base de données n'est pas effectuée immédiatement, mais uniquement en cas de besoin - lorsque l'ensemble de requêtes est évalué . Cela se produit par exemple si vous appelez sa méthode __str__ Lorsque vous l'imprimez, si vous appelez list() dessus, ou, ce qui se passe le plus souvent, vous itérez dessus (for post in b..). Cette paresse devrait vous éviter de faire des requêtes inutiles et vous permet également de chaîner des ensembles de requêtes et des filtres par exemple (vous pouvez filtrer un ensemble de requêtes aussi souvent que vous le souhaitez).

47
Bernhard Vallant

Un QuerySet représente une collection d'objets de votre base de données. Il peut avoir zéro, un ou plusieurs filtres. Les filtres affinent les résultats de la requête en fonction des paramètres donnés. En termes SQL, un QuerySet équivaut à une instruction SELECT et un filtre est une clause limitative telle que WHERE ou LIMIT.

https://docs.djangoproject.com/en/1.8/topics/db/queries/

5
Harshit Garg

Un QuerySet est une liste d'objets d'un modèle donné, QuerySet vous permet de lire les données de la base de données

0
harivans kumar