Exercice - Utiliser les données

Effectué

En créant nos modèles, nous avons créé une API que nous pouvons utiliser pour accéder aux données de notre base de données. Cette API nous permet de créer, récupérer, mettre à jour et supprimer des objets dans notre base de données.

Nous allons explorer l’API en utilisant les modèles que nous avons créés.

Configurer l’interpréteur de commandes interactif

Django comprend un interpréteur de commandes interactif dans lequel vous pouvez exécuter du code Python dans l’environnement Django.

  1. Dans Visual Studio Code, revenez à la fenêtre de terminal en sélectionnant Affichage>Terminal.

  2. Entrez la commande suivante pour démarrer l’interpréteur de commandes :

    python manage.py shell
    
  3. Importez les modèles de models dans dog_shelters :

    from dog_shelters.models import Shelter, Dog
    

Créer et modifier des objets

Étant donné que nos modèles sont des classes Python, nous créons des instances avec la syntaxe que nous utiliserions pour créer un objet. Comme ils héritent de Django.models.Model, ils héritent des fonctionnalités de l’ORM Django, notamment de save, que nous utilisons pour enregistrer l’objet dans la base de données.

  1. Créez un refuge en exécutant la commande Python suivante dans l’interpréteur de commandes :

    shelter = Shelter(name="Demo shelter", location="Seattle, WA")
    shelter.save()
    

    La partie save écrira l’objet dans la base de données. Comme nous avons effectué la création à partir de zéro, elle exécutera une instruction INSERT dans la base de données.

  2. Mettez à jour l’adresse du refuge en spécifiant « Redmond, WA » pour le champ location et en appelant save :

    shelter.location = "Redmond, WA"
    shelter.save()
    

    Cette commande émet une instruction UPDATE pour mettre à jour la valeur dans la base de données.

  3. Créez deux chiens pour le refuge en exécutant les commandes Python suivantes dans l’interpréteur de commandes :

    Dog(name="Sammy", description="Cute black and white dog", shelter=shelter).save()
    Dog(name="Roscoe", description="Lab mix", shelter=shelter).save()
    

    Comme précédemment, save insère le chien. Notez que nous définissons le paramètre shelter sur l’objet shelter que nous avons créé précédemment. Django définit automatiquement la relation dans la base de données.

    Notez également que nous n’avons pas configuré de variable locale pour chaque instance de Dog. Comme nous ne réutiliserons pas les objets, nous n’avons pas besoin de les définir comme variables.

Récupérer des objets

Django fournit une propriété objects sur toutes les classes Model, permettant de récupérer des objets à partir d’une base de données. La propriété objects fournit plusieurs fonctions, notamment all, filter et get.

  1. Récupérez tous les chiens de Demo shelter en exécutant la commande suivante :

    shelter.dog_set.all()
    

    La partie dog_set stocke la liste de tous les chiens pour un refuge en particulier. Django retourne un objet QuerySet avec les deux chiens que nous avons créés.

    <QuerySet [<Dog: Sammy>, <Dog: Roscoe>]>
    
  2. Récupérez le deuxième chien en utilisant get comme dans la commande suivante :

    Dog.objects.get(pk=1)
    

    La fonction get ne retourne qu’un seul objet. Vous pouvez passer des paramètres dans get pour fournir une chaîne de requête. Ici, nous utilisons pk, qui est un mot clé spécial pour indiquer la clé primaire. Le résultat retourné est Sammy.

    <Dog: Sammy>
    
  3. Récupérez tous les chiens de Demo shelter à l’aide de la fonction filter comme dans la commande suivante :

    Dog.objects.filter(shelter__name='Demo shelter')
    

    Comme get, filter nous permet de passer une requête dans les paramètres. Notez que nous pouvons utiliser deux traits de soulignement (__) pour passer d’une propriété à l’autre. Comme nous voulons trouver tous les chiens du refuge nommé Demo shelter, nous utilisons shelter__name pour accéder à la propriété name de shelter. Tous les chiens seront retournés comme résultat, car nous n’avons qu’un seul refuge.

    <QuerySet [<Dog: Sammy>, <Dog: Roscoe>]>
    

Fermer l’interpréteur de commandes

Après avoir expérimenté les objets, vous pouvez fermer l’interpréteur de commandes en exécutant la commande exit().

Récapitulatif

Vous avez vu comment utiliser les données par programmation dans Django avec l’ORM Django.