Menu
CoddyTech

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.

challenge icon

Défi

Facile

Dans explore.py, au-dessus du dernier print :

  1. Dune est en promotion : définis son prix à 7.99.
  2. Marque tous les livres de Jane Austen comme lus, en une seule requête.
  3. 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")
quiz iconTestez-vous

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

Entraînez-vous par vous-même : Playground Django