Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
public:appro-s7:td_web:orm [2023/10/18 14:19] – edauce | public:appro-s7:td_web:orm [2023/11/03 15:00] (Version actuelle) – edauce |
---|
==== 9. L'ORM Django et les QuerySets ==== | ===== 10. L'ORM Django et les QuerySets ===== |
| |
Dans ce chapitre, nous allons apprendre comment Django se connecte à la base de données et comment il y enregistre des choses. On respire un grand coup et on y va ! | Dans ce chapitre, nous allons apprendre comment Django se connecte à la base de données et comment il y enregistre des choses. On respire un grand coup et on y va ! |
Il est plus simple d'apprendre avec un exemple. Et si nous nous intéressions à celui-ci ? | Il est plus simple d'apprendre avec un exemple. Et si nous nous intéressions à celui-ci ? |
| |
=== Le shell Django === | ==== Le shell Django ==== |
| |
Ouvrez la console de votre ordinateur (et non celle de PythonAnywhere) et tapez la commande suivante : | Ouvrez la console de votre ordinateur (et non celle de PythonAnywhere) et tapez la commande suivante : |
Vous êtes maintenant dans la console interactive de Django. C'est comme celle de Python, mais avec toute la magie qu'apporte Django :). Les commandes Python sont aussi utilisables dans cette console. | Vous êtes maintenant dans la console interactive de Django. C'est comme celle de Python, mais avec toute la magie qu'apporte Django :). Les commandes Python sont aussi utilisables dans cette console. |
| |
=== Lister tous les objets === | ==== Lister tous les objets ==== |
| |
Essayons tout d'abord d'afficher tous nos billets. Vous pouvez le faire à l'aide de cette commande : | Essayons tout d'abord d'afficher tous nos billets. Vous pouvez le faire à l'aide de cette commande : |
Cela nous permet d'obtenir une liste des billets que nous avons créés tout à l'heure ! Rappelez-vous : nous avions créé ces billets à l'aide de l'interface d'administration de Django. Cependant, nous aimerions maintenant créer de nouveaux billets à l'aide de python : comment allons-nous nous y prendre ? | Cela nous permet d'obtenir une liste des billets que nous avons créés tout à l'heure ! Rappelez-vous : nous avions créé ces billets à l'aide de l'interface d'administration de Django. Cependant, nous aimerions maintenant créer de nouveaux billets à l'aide de python : comment allons-nous nous y prendre ? |
| |
=== Créer des objets === | ==== Créer des objets ==== |
| |
Voici comment créer un nouveau objet Billet dans la base de données : | Voici comment créer un nouveau objet Billet dans la base de données : |
>>> Billet.objects.create(author=me, title='Sample title', text='Test') | >>> Billet.objects.create(author=me, title='Sample title', text='Test') |
<Billet: Sample title> | <Billet: Sample title> |
| |
Et voilà ! Vous aimeriez voir si ça a vraiment marché ? | Et voilà ! Vous aimeriez voir si ça a vraiment marché ? |
| |
command-line | command-line |
>>> Billet.objects.all() | >>> Billet.objects.all() |
<QuerySet [<Billet: my post title>, <Billet: another post title>, <Billet: Sample title>]> | <QuerySet [<Billet: my post title>, <Billet: another post title>, <Billet: Sample title>]> |
| |
Et voilà : un Billet de plus dans la liste ! | Et voilà : un Billet de plus dans la liste ! |
| |
=== Ajouter plus de billets === | ==== Ajouter plus de billets ==== |
| |
Amusez-vous à ajouter d'autres billets pour vous entraîner un peu. Essayez d'ajouter deux ou trois billets en plus puis passez à la partie suivante. | Amusez-vous à ajouter d'autres billets pour vous entraîner un peu. Essayez d'ajouter deux ou trois billets en plus puis passez à la partie suivante. |
| |
=== Filtrer les objets === | ==== Filtrer les objets ==== |
| |
L'intérêt des QuerySets, c'est que l'on peut les filtrer. Disons que nous aimerions retrouver tous les billets écrits par l'utilisateur Ola. Pour cela, nous allons utiliser filter à la place de all dans Billet.objects.all(). Les parenthèses vont nous servir à préciser quelles sont les conditions auxquelles un billet de blog doit se conformer pour être retenu par notre queryset. Dans notre exemple, la condition est que author soit égal à me. La manière de le dire en Django c'est : author=me. Maintenant, votre bout de code doit ressembler à ceci: | L'intérêt des QuerySets, c'est que l'on peut les filtrer. Disons que nous aimerions retrouver tous les billets écrits par l'utilisateur Ola. Pour cela, nous allons utiliser filter à la place de all dans Billet.objects.all(). Les parenthèses vont nous servir à préciser quelles sont les conditions auxquelles un billet de blog doit se conformer pour être retenu par notre queryset. Dans notre exemple, la condition est que author soit égal à me. La manière de le dire en Django c'est : author=me. Maintenant, votre bout de code doit ressembler à ceci: |
<QuerySet [<Billet: Sample title>]> | <QuerySet [<Billet: Sample title>]> |
| |
=== Classer les objets === | ==== Classer les objets ==== |
| |
Les QuerySets permettent aussi de trier la liste des objets. Essayons de les trier par le champ created_date : | Les QuerySets permettent aussi de trier la liste des objets. Essayons de les trier par le champ created_date : |