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).
Oui, c'est juste un autre type , construit comme tous les autres types .
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).
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.
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