Aggiornare ed eliminare
Fa parte della sezione Modelli e pannello di amministrazione del percorso Django di Coddy. Lezione 12 di 23.
I prezzi cambiano e i libri escono dallo scaffale. Per modificare un libro, imposta il suo attributo e chiama save(); senza save() la tabella conserva il vecchio valore. Per modificare più righe in una volta, chiama update() su un QuerySet. Esegue un solo UPDATE e restituisce il numero di righe modificate. delete() funziona allo stesso modo e restituisce il numero di righe eliminate, in totale e per modello:
Book.objects.filter(year__lt=1900).update(price="5.00") # 2
Book.objects.filter(price__gt=14).delete() # (1, {'books.Book': 1})Entrambi agiscono esattamente sulle righe del QuerySet, quindi applica prima un filtro. Book.objects.update(is_read=True) contrassegna ogni libro e nessuno dei due metodi chiede conferma prima di agire.
Sfida
FacileIn explore.py, sopra l'ultimo print:
Duneè in saldo: imposta il suo prezzo a7.99.- Segna come letti tutti i libri di
Jane Austen, con una sola query. - Elimina tutti i libri gialli, con una sola query.
Premi Run. La Console mostra 7 books on the shelf e la scheda Data mostra Dune a 7.99 e nessun libro giallo.
Provalo tu
from books.models import Book
# 1. Dune è in offerta: imposta il suo prezzo a 7.99.
# 2. Contrassegna come letto ogni libro di Jane Austen.
# 3. Regala tutti i libri gialli.
print(Book.objects.count(), "books on the shelf")
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Modelli e pannello di amministrazione
2Interrogare con l’ORM
Creare righeTutti e OttieniFiltri e ricercheContare le righeOrdinare le righeAggiornare ed eliminareEsercitati da solo: Playground Django