Menu
CoddyTech

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.

challenge icon

Sfida

Facile

In explore.py, sopra l'ultimo print:

  1. Dune è in saldo: imposta il suo prezzo a 7.99.
  2. Segna come letti tutti i libri di Jane Austen, con una sola query.
  3. 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")
quiz iconMettiti alla prova

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

Esercitati da solo: Playground Django