Esercizio - Usare i dati

Completato

Con la creazione dei modelli è stata creata un'API che è possibile usare per accedere ai dati nel database. Questa API consente di creare, recuperare, aggiornare ed eliminare oggetti presenti nel database.

È ora possibile esaminare l'API usando i modelli che sono stati creati.

Configurare la shell interattiva

Django include una shell interattiva in cui è possibile eseguire il codice Python nell'ambiente Django.

  1. Tornare al terminale in Visual Studio Code selezionando Visualizza>Terminale.

  2. Per avviare la shell, immettere il comando seguente:

    python manage.py shell
    
  3. Importare i modelli da models all'interno di dog_shelters:

    from dog_shelters.models import Shelter, Dog
    

Creare e modificare oggetti

Poiché i modelli sono classi Python, vengono create nuove istanze usando la stessa sintassi usata per creare un oggetto. Poiché ereditano da Django.models.Model, ereditano le funzionalità per l'ORM di Django. Tali funzionalità includono save, che viene utilizzato per salvare l'oggetto nel database.

  1. Creare un nuovo canile eseguendo il comando Python seguente nella shell:

    shelter = Shelter(name="Demo shelter", location="Seattle, WA")
    shelter.save()
    

    La parte save scrive l'oggetto nel database. Poiché tale oggetto è stato creato da zero, eseguirà un'istruzione INSERT nel database.

  2. Aggiornare la posizione del canile a Redmond, WA, impostando il campo location e chiamando save:

    shelter.location = "Redmond, WA"
    shelter.save()
    

    Questo comando genera un'istruzione UPDATE per aggiornare il valore nel database.

  3. Creare due nuovi cani per il canile eseguendo i comandi Python seguenti nella shell:

    Dog(name="Sammy", description="Cute black and white dog", shelter=shelter).save()
    Dog(name="Roscoe", description="Lab mix", shelter=shelter).save()
    

    Come in precedenza, save inserisce il cane. Si noti che il parametro shelter viene impostato sull'oggetto shelter creato in precedenza. Django imposta automaticamente la relazione nel database.

    Si noti anche che non è stata configurata una variabile locale per ogni istanza di Dog. Poiché gli oggetti non vengono riutilizzati, non è necessario impostarli su una variabile.

Recupero di oggetti

Per recuperare oggetti da un database, Django fornisce una proprietà objects per tutte le classi Model. La proprietà objects fornisce più funzioni, tra cui all, filter e get.

  1. Recuperare tutti i cani in Demo shelter eseguendo il comando seguente:

    shelter.dog_set.all()
    

    La parte dog_set memorizza l'elenco di tutti i cani di uno specifico canile. Django restituirà un oggetto QuerySet con i due cani che sono stati creati.

    <QuerySet [<Dog: Sammy>, <Dog: Roscoe>]>
    
  2. Recuperare il secondo cane usando get come illustrato nel comando seguente:

    Dog.objects.get(pk=1)
    

    La funzione get restituirà un solo oggetto. Per fornire una stringa di query, è possibile passare i parametri in get. In questo caso viene usato pk, una parola chiave speciale che indica la chiave primaria. Il risultato restituito sarà Sammy.

    <Dog: Sammy>
    
  3. Recuperare tutti i cani in Demo shelter usando filter come illustrato nel comando seguente:

    Dog.objects.filter(shelter__name='Demo shelter')
    

    Come get, anche filter consente di passare una query nei parametri. Si noti che, per passare da una proprietà all'altra, è possibile usare due caratteri di sottolineatura (__). Poiché si vogliono trovare tutti i cani presenti nel canile denominato Demo shelter, viene usato shelter__name per accedere alla proprietà name di shelter. Come risultato verranno restituiti tutti i cani, perché è presente un solo canile.

    <QuerySet [<Dog: Sammy>, <Dog: Roscoe>]>
    

Chiudere la shell

Dopo aver completato la gestione degli oggetti, è possibile chiudere la shell eseguendo il comando exit().

Riepilogo

In questo modulo è stato illustrato come usare i dati a livello di codice in Django tramite l'ORM di Django.