Exercice - Utiliser les données
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.
Dans Visual Studio Code, revenez à la fenêtre de terminal en sélectionnant Affichage>Terminal.
Entrez la commande suivante pour démarrer l’interpréteur de commandes :
python manage.py shell
Importez les modèles de
models
dansdog_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.
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 instructionINSERT
dans la base de données.Mettez à jour l’adresse du refuge en spécifiant « Redmond, WA » pour le champ
location
et en appelantsave
:shelter.location = "Redmond, WA" shelter.save()
Cette commande émet une instruction
UPDATE
pour mettre à jour la valeur dans la base de données.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ètreshelter
sur l’objetshelter
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
.
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 objetQuerySet
avec les deux chiens que nous avons créés.<QuerySet [<Dog: Sammy>, <Dog: Roscoe>]>
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 dansget
pour fournir une chaîne de requête. Ici, nous utilisonspk
, qui est un mot clé spécial pour indiquer la clé primaire. Le résultat retourné est Sammy.<Dog: Sammy>
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 utilisonsshelter__name
pour accéder à la propriéténame
deshelter
. 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.