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éfinissez son attribut et appelez save() ; sans save(), la table conserve l’ancienne valeur. Pour modifier plusieurs lignes à la fois, appelez 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 façon 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 exactement sur les lignes du QuerySet ; filtrez donc d’abord. 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 : fixez son prix à 7.99.
  2. Marquez comme lus tous les livres de Jane Austen en une seule requête.
  3. Supprimez tous les livres policiers en une seule requête.

Appuyez sur Run. La console affiche 7 books on the shelf, et l’onglet Data indique que le prix de Dune est de 7.99 et qu’il n’y a aucun livre policier.

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