Mettre à jour et supprimer
Fait partie de la section Modèles et interface d’administration du Journey Django de Coddy. Leçon 12 sur 23.
Les prix changent et les livres quittent les rayons. Pour modifier un livre, définis son attribut et appelle save() ; sans save(), la table conserve l’ancienne valeur. Pour modifier plusieurs lignes à la fois, appelle update() sur un QuerySet. Cette méthode exécute une seule instruction UPDATE et renvoie le nombre de lignes modifiées. delete() fonctionne de la même manière et renvoie le nombre de lignes supprimées, au total et pour chaque modèle :
Book.objects.filter(year__lt=1900).update(price="5.00") # 2
Book.objects.filter(price__gt=14).delete() # (1, {'books.Book': 1})Les deux méthodes agissent uniquement sur les lignes du QuerySet ; commence donc par filtrer. Book.objects.update(is_read=True) marque tous les livres comme lus, et aucune des deux méthodes ne demande confirmation avant d’agir.
Défi
FacileDans explore.py, au-dessus du dernier print :
Duneest en promotion : définis son prix à7.99.- Marque tous les livres de
Jane Austencomme lus, en une seule requête. - Supprime tous les romans policiers, en une seule requête.
Appuie sur « Exécuter » : la Console affiche 7 books on the shelf.
Essayez vous-même
from books.models import Book
# 1. Dune est en promotion : fixe son prix à 7.99.
# 2. Marque tous les livres de Jane Austen comme lus.
# 3. Donne tous les romans policiers.
print(Book.objects.count(), "books on the shelf")
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Modèles et interface d’administration
2Interroger avec l’ORM
Créer des lignesAll et GetFiltres et recherchesCompter les lignesTrier les lignesMettre à jour et supprimer3Des pages issues de la base de données
Une liste issue de la base de donnéesUne page pour chaque livreEntraînez-vous par vous-même : Playground Django