prefetch_related M2M-relaatioille
Lataa many-to-many-tiedot tehokkaasti erissä
prefetch_related M2M-relaatioille on ilmainen Django Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Django Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Django Academy-kurssilla on yhteensä 4 oppituntia.
Tutustu prefetch_related-toimintoon
prefetch_related käsittelee suhteet, joihin liitos ei pysty, kuten many-to-many-suhteet ja käänteiset linkit, älykkään erähaun avulla. 📦
Kaksi kyselyä, ei montaa
Yhden valtavan liitoksen sijaan se suorittaa toisen kyselyn liittyville riveille ja yhdistää ne sitten Pythonissa.
Peruskutsu
Välitä suhteen nimi prefetch_related-kutsulle kuten aiemmin, niin Django kokoaa haut automaattisesti eriksi.
authors = Author.objects.prefetch_related('books')Miksi kaksi on parempi kuin N+1
Yksi kysely kirjailijoille ja yksi kaikille heidän kirjoilleen tarkoittaa yhteensä kahta yhteyttä riippumatta siitä, kuinka monta kirjailijaa käyt silmukassa läpi.
for author in authors:
print(author.books.count())Paras monille riveille
Käytä sitä aina, kun kukin olio liittyy useisiin riveihin: many-to-many-kentät ja käänteiset vierasavaimet sopivat siihen erinomaisesti.
Käänteiset suhteet toimivat
Se on erityisen hyödyllinen käänteisissä viittauksissa, kuten kirjailijan kaikkien kirjojen hakemisessa, johon select_related ei yksinkertaisesti sovellu.
Molempien työkalujen yhdistäminen
Voit ketjuttaa molemmat optimoijat samaan querysettiin ja käyttää kumpaakin sille parhaiten sopivassa suhdetyypissä.
Book.objects.select_related('author').prefetch_related('tags')Hallitse Prefetchilla
Prefetch-olion avulla voit suodattaa tai järjestää haettavat liittyvät rivit ja hallita hakua tarkasti.
from django.db.models import Prefetch
Author.objects.prefetch_related(
Prefetch('books', queryset=Book.objects.filter(year=2024)))Suoritetaan Pythonissa
Yhdistäminen tapahtuu Pythonissa, ei SQL:ssä. Siksi vältetään rivien räjähdysmäinen kasvu, jonka suuri many-to-many-liitos aiheuttaisi.
Suodata silmukan sisällä harkiten
Jos kutsutte filter-metodia esiladatulle joukolle silmukan sisällä, se tekee jälleen uusia kyselyitä. Käyttäkää Prefetchia, jotta eräkäsittelyn hyöty säilyy.
Kaksi työkalua, yksi tavoite
select_related yksittäisille yhteyksille ja prefetch_related useille yhteyksille. Yhdessä ne poistavat N+1-ongelman lähes mistä tahansa näkymästä. 🚀
Pikatarkistus
Valitkaa tähän tilanteeseen sopiva optimoija.
Kertaus
prefetch_related kokoaa many-to-many- ja käänteiset yhteydet toiseksi kyselyksi ja yhdistää tulokset Pythonissa. Käyttäkää sitä yhdessä select_relatedin kanssa kattavan ratkaisun saamiseksi. ✅
Opi Python tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 30
- Oppitunnit
- 120
Usein kysytyt kysymykset
Onko oppitunti ”prefetch_related M2M-relaatioille” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Django Academy-oppimispolun 3 oppituntia, myös oppitunnin “prefetch_related M2M-relaatioille”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Django Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”prefetch_related M2M-relaatioille”?
Lataa many-to-many-tiedot tehokkaasti erissä Harjoittelet Django Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Django Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Django Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”prefetch_related M2M-relaatioille”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Django Academy-oppitunnilla?
Kyllä. Jokainen Django Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- N+1-ongelman tunnistaminen
- select_related ForeignKey-kentille
- prefetch_related M2M-relaatioille
- Profilointi Debug Toolbarilla