all(), get() och filter()
De viktigaste sätten att hämta objekt
all(), get() och filter() är en gratis lektion i Django Academy på CoddyKit. Detta är lektion 1 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Django Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Django Academy innehåller totalt 4 lektioner.
Möt managern
Varje modell ger dig en kostnadsfri objects-manager. Den är din ingång till databasen, och varje fråga du skriver börjar där. 🚪
Book.objectsHämta allt
Anropa all() för att hämta varje rad i tabellen. Du får tillbaka en QuerySet som du kan iterera över, räkna eller förfina ytterligare.
books = Book.objects.all()En QuerySet är inte en lista
En QuerySet liknar en lista, men är lazy. Django väntar med att kontakta databasen tills du faktiskt använder resultaten.
Hämta exakt en
Använd get() när du förväntar dig en enda matchande rad, till exempel en post som hittas med sin primärnyckel.
book = Book.objects.get(pk=1)När get() misslyckas
get() är strikt. Om inget matchar genererar det DoesNotExist, så använd det bara när du är säker på att en rad finns.
Book.objects.get(pk=999)För många träffar
Om get() hittar fler än en rad genererar det MultipleObjectsReturned. Det betyder verkligen en och endast en.
Filtrera fram ett urval
Använd filter() när du vill ha de rader som uppfyller ett villkor. Det returnerar en QuerySet även om bara en rad matchar.
Book.objects.filter(published=True)Filter returnerar noll eller fler
Till skillnad från get() genererar filter() aldrig ett fel när inget matchar. Du får helt enkelt tillbaka en tom QuerySet.
Book.objects.filter(author="Nobody")Flera villkor
Skicka flera nyckelordsargument till filter() så kombinerar Django dem med AND. Alla villkor måste vara sanna.
Book.objects.filter(published=True, year=2024)get och filter i korthet
Använd get() för ett garanterat objekt och filter() för en samling. Det valet förebygger de flesta nybörjarfel i frågor.
Kedja dina filter
Eftersom filter() returnerar en QuerySet kan du kedja anrop för att stegvis begränsa resultaten innan databasen berörs.
Book.objects.filter(published=True).filter(year=2024)Snabb kontroll
Du förväntar dig en enda bok, men det finns ingen matchning. Vilket anrop genererar ett fel?
Sammanfattning
Bra jobbat! all() hämtar allt, get() hämtar en exakt rad och filter() returnerar ett urval som du kan kedja vidare. 🎉
Lär dig Python med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 30
- Lektioner
- 120
Vanliga frågor
Är lektionen ”all(), get() och filter()” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Django Academy, inklusive ”all(), get() och filter()”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Django Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”all(), get() och filter()”?
De viktigaste sätten att hämta objekt Ni övar på Django Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Django Academy?
Du behöver inga förkunskaper. Utbildningen i Django Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.
Hur lång tid tar lektionen ”all(), get() och filter()”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Django Academy-lektionen?
Ja. Varje Django Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- all(), get() och filter()
- Fältuppslag och exclude()
- order_by, slicing och lazy evaluation
- values, values_list och count