Un QuerySet est une collection d’objets de base de données à partir de votre modèle Django. En utilisant Django ORM (Object-Relational Mapping), qui est une interface de Django pour votre base de données, vous pouvez facilement filtrer les résultats de vos modèles de base de données en utilisant une API douce. Un QuerySet peut être filtré, tranché ou ordonné, et supporte les méthodes de requêtes en chaîne.
Un QuerySet est également paresseux, ce qui signifie qu’il n’évalue ses résultats qu’à l’échéance. Django va chercher ces objets quand ils sont nécessaires. Par exemple, si vous créez un QuerySet en utilisant ‘YourModel.objects.all()’, Django ne va pas chercher ces objets à ce moment-là. Django exécutera la requête uniquement si vous itérez sur le QuerySet.
Django offre une variété de méthodes de classe QuerySet pour vous aider à récupérer et à filtrer vos données. Quelques exemples courants sont:
- all(): Renvoie un QuerySet qui retourne tous les objets pour ce modèle de base de données.
- filter(\*\*kwargs): Renvoie un nouveau QuerySet contenant les objets qui correspondent aux conditions de filtrage spécifiées.
- exclude(\*\*kwargs): fait le contraire de la méthode de filtrage et exclut les objets qui répondent aux critères de filtrage.
Voici un exemple d’utilisation de queryset :
Supposons que vous ayez un modèle Django appelé ‘Book’ avec des champ ‘titre’, ‘auteur’ et ‘pub\_date’. Vous pouvez récupérer tous les livres de l’auteur “Hemingway” qui ont été publiés en 1950 comme suit:
```
hemingway_books = Book.objects.filter(auteur=“Hemingway”, pub_date__year=1950)
```
De même, vous pouvez obtenir tous les livres qui n’ont pas été écrits par “Hemingway” comme suit :
```
not_hemingway_books = Book.objects.exclude(auteur=“Hemingway”)
```
Ces exemples démontrent comment Django offre un moyen puissant et flexible de travailler avec les bases de données relationnelles.
Les sources pour cette information incluent la documentation officielle de Django (https://docs.djangoproject.com/fr/3.2/topics/db/queries/), qui fournit une explication détaillée sur les queryset et leur utilisation. C’est une ressource très fiable car elle est directement maintenue par les développeurs de Django.