Övning – Arbeta med data

Slutförd

Genom att skapa våra modeller skapade vi ett API som vi kan använda för att komma åt data i vår databas. Med det här API:et kan vi skapa, hämta, uppdatera och ta bort objekt i databasen.

Nu ska vi utforska API:et genom att arbeta med de modeller som vi skapade.

Konfigurera det interaktiva gränssnittet

Django innehåller ett interaktivt gränssnitt där du kan köra Python-kod i Django-miljön.

  1. Gå tillbaka till terminalen i Visual Studio Code genom att välja Visa>terminal.

  2. Ange följande kommando för att starta gränssnittet:

    python manage.py shell
    
  3. Importera modellerna inifrån modelsdog_shelters:

    from dog_shelters.models import Shelter, Dog
    

Skapa och ändra objekt

Eftersom våra modeller är Python-klasser skapar vi nya instanser med samma syntax som vi skulle använda för att skapa ett objekt. Eftersom de ärver från Django.models.Modelärver de funktionerna för Django ORM. Den funktionen innehåller save, som vi använder för att spara objektet i databasen.

  1. Skapa ett nytt skydd genom att köra följande Python-kommando i gränssnittet:

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

    Delen save skriver objektet till databasen. Eftersom vi skapade detta från grunden körs en INSERT -instruktion i databasen.

  2. Uppdatera platsen för skyddsrummet till Redmond, WA, genom att ange fältet location och anropa save:

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

    Det här kommandot utfärdar en UPDATE instruktion för att uppdatera värdet i databasen.

  3. Skapa två nya hundar för skyddsrummet genom att köra följande Python-kommandon i gränssnittet:

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

    Som tidigare, save infogar hunden. Observera hur vi ställer in parametern shelter på det shelter objekt som vi skapade tidigare. Django anger automatiskt relationen i databasen.

    Observera också att vi inte har konfigurerat någon lokal variabel för varje Dog instans. Eftersom vi inte återanvänder objekten behöver vi inte ange dem till en variabel.

Hämtar objekt

Django tillhandahåller en objects egenskap för alla Model klasser för att hämta objekt från en databas. Egenskapen objects innehåller flera funktioner, inklusive all, filteroch get.

  1. Hämta alla hundar i Demo shelter genom att köra följande kommando:

    shelter.dog_set.all()
    

    Delen dog_set lagrar listan över alla hundar för ett visst skydd. Django returnerar ett QuerySet objekt med de två hundar som vi skapade.

    <QuerySet [<Dog: Sammy>, <Dog: Roscoe>]>
    
  2. Hämta den andra hunden med hjälp get av följande kommando:

    Dog.objects.get(pk=1)
    

    Funktionen get returnerar bara ett objekt. Du kan skicka parametrar till get för att ange en frågesträng. Här använder pkvi , vilket är ett speciellt nyckelord för att ange primärnyckeln. Det returnerade resultatet blir Sammy.

    <Dog: Sammy>
    
  3. Hämta alla hundar i Demo shelter med hjälp filter av följande kommando:

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

    Som getgör filter att vi kan skicka en fråga i parametrarna. Observera att vi kan använda två understreck (__) för att gå från egenskap till egenskap. Eftersom vi vill hitta alla hundar i skyddsrummet med namnet Demo shelter använder shelter__name vi för att komma åt name egenskapen shelterför . Resultatet som returneras kommer att vara alla hundar, eftersom vi bara har ett skydd.

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

Stäng gränssnittet

När du är klar med att leka med objekten kan du stänga gränssnittet genom att exit() köra kommandot .

Sammanfattning

Nu har du sett hur du programmatiskt kan arbeta med data i Django via Django ORM.