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.
Défi
FacileDans explore.py, au-dessus du dernier print :
Duneest en promotion : fixez son prix à7.99.- Marquez comme lus tous les livres de
Jane Austenen une seule requête. - 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")
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