Django Academy · Lektion

select_related til Foreign Keys

JOIN relaterede rækker i én forespørgsel

Lektion 2 af 413 trin

select_related til Foreign Keys er en gratis Django Academy-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Django Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Django Academy-kurset indeholder 4 lektioner i alt.

Mød select_related

select_related fortæller Django, at relaterede rækker skal hentes på forhånd i den samme forespørgsel, så løkker ikke udløser ekstra ture. ⚡

Det bruger en JOIN

Under overfladen tilføjer det en SQL-JOIN, som henter det overordnede objekt og dets relaterede række sammen i én effektiv tur.

Det grundlæggende kald

Send navnet på det relaterede felt til select_related på dit queryset, så sker sammenføjningen automatisk, når dataene indlæses.

books = Book.objects.select_related('author')

Fra 101 til 1

Nu udfører en løkke over bøgerne, hvor du læser hver forfatter, én enkelt forespørgsel i stedet for 101. Samme kode, enorm gevinst.

for book in books:
    print(book.author.name)

Hvornår det passer

Brug det til felter af typen ForeignKey og OneToOne, hvor hvert objekt peger på præcis én relateret række, som en sammenføjning kan hente.

Ikke til mange

Det fungerer ikke til mange-til-mange-forbindelser eller omvendte en-til-mange-forbindelser, fordi en sammenføjning ikke kan samle mange rækker på en enkel måde.

Følg kæden

Du kan gå gennem flere led med dobbelte understregninger og sammenføje på tværs af mere end én fremmednøgle i en enkelt forespørgsel.

Book.objects.select_related('author__publisher')

Flere på én gang

Send flere feltnavne for at hente flere relationer sammen, alt sammen samlet i den samme optimerede forespørgsel.

Order.objects.select_related('customer', 'product')

Det er også dovent

Forespørgslen venter stadig, til du faktisk bruger dataene, så det er billigt og fleksibelt fortsat at kæde filtre og order_by sammen før den.

Vær opmærksom på bredden

Sammenføjninger tilføjer kolonner, så vælg ikke for meget. Hent kun de relationer, du faktisk læser, så hver række forbliver kompakt.

En refleks, der er værd at opbygge

Ser du en fremmednøgle blive tilgået i en løkke? Brug først select_related. Det bliver hurtigt en naturlig vane. 🎯

Hurtigt tjek

Vælg det rigtige værktøj til denne relation.

Opsummering

select_related sammenføjer ForeignKey- og OneToOne-data i én forespørgsel og fjerner N+1 for forbindelser til én række. Kæd flere led sammen med dobbelte understregninger. ✅

Gratis at komme i gang

Lær Python med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
30
Lektioner
120

Ofte stillede spørgsmål

Er lektionen “select_related til Foreign Keys” gratis?

Ja — alle 3 lektioner i læringssporet Django Academy, inklusive “select_related til Foreign Keys”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Django Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “select_related til Foreign Keys”?

JOIN relaterede rækker i én forespørgsel Du øver dig i Django Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Django Academy?

Der kræves ingen tidligere erfaring. Django Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.

Hvor lang tid tager lektionen “select_related til Foreign Keys”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Django Academy-lektion?

Ja. Alle Django Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Find N+1-problemet
  2. select_related til Foreign Keys
  3. prefetch_related til M2M
  4. Profilering med Debug Toolbar
← Tilbage til Django Academy