Övning – Arbeta med data
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.
Gå tillbaka till terminalen i Visual Studio Code genom att välja Visa>terminal.
Ange följande kommando för att starta gränssnittet:
python manage.py shell
Importera modellerna inifrån
models
dog_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.
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 enINSERT
-instruktion i databasen.Uppdatera platsen för skyddsrummet till Redmond, WA, genom att ange fältet
location
och anropasave
:shelter.location = "Redmond, WA" shelter.save()
Det här kommandot utfärdar en
UPDATE
instruktion för att uppdatera värdet i databasen.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 parameternshelter
på detshelter
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
, filter
och get
.
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 ettQuerySet
objekt med de två hundar som vi skapade.<QuerySet [<Dog: Sammy>, <Dog: Roscoe>]>
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 tillget
för att ange en frågesträng. Här använderpk
vi , vilket är ett speciellt nyckelord för att ange primärnyckeln. Det returnerade resultatet blir Sammy.<Dog: Sammy>
Hämta alla hundar i Demo shelter med hjälp
filter
av följande kommando:Dog.objects.filter(shelter__name='Demo shelter')
Som
get
görfilter
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ändershelter__name
vi för att komma åtname
egenskapenshelter
fö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.