Tokie skaitytojai kaip jūs padeda palaikyti MUO. Kai perkate naudodami nuorodas mūsų svetainėje, galime uždirbti filialų komisinius.
Duomenų bazės ryšys apibūdina ryšį tarp skirtingų duomenų bazės lentelių. Ryšiai nustato, kaip saugoti ir gauti duomenis. „Django“ gerai veikia su reliacinėmis duomenų bazių sistemomis (RDBMS). Todėl jis palaiko duomenų bazės lentelių ryšius.
Ryšių tipai priklauso nuo programos reikalavimų ir jos modeliuojamų duomenų. Geri Django modelių ir duomenų bazės santykiai pagerina duomenų priežiūrą. Tai apima užklausos našumo gerinimą ir duomenų dubliavimo mažinimą.
Galite sužinoti, kaip Django duomenų bazės ryšiai veikia programos našumą, tyrinėdami tris pagrindinius ryšių tipus.
Duomenų bazių ryšiai
Reliacinės duomenų bazių sistemos palaiko trijų tipų duomenų bazių ryšius. Šie santykiai yra „vienas su daugeliu“, „daugelis su daugeliu“ ir „vienas su vienu“. Duomenų bazės ryšio tipas turi įtakos jūsų programos naudojimo atvejams.
Django modeliai vaizduoja duomenų bazių lenteles programoje. Turite sukurti gerus ryšius tarp lentelių, kad sukurtumėte gerą duomenų bazių sistemą. Duomenų bazės ryšiai nustato, kaip saugoti ir pateikti duomenis jūsų programoje.
Norėdami suprasti duomenų bazių ryšius, pradėkite nuo sukurti Django projektą pavadintas Gaubtai. Programėlė bus kaimynystės socialinis tinklas. Ji valdys įvairių kvartalų socialinę veiklą, saugumą, verslą.
Gyventojai gali registruotis, prisijungti ir kurti profilius. Jie taip pat gali kurti įrašus ir verslo skelbimus, kad visi matytų.
Norėdami pradėti, sukurkite duomenų bazę, kurioje bus saugomi visi apylinkių duomenys. Tada sukursite profilio, kaimynystės, verslo ir pašto modelius. Norėdami sukurti modelius, turite nustatyti ryšį, kurio reikia duomenų bazės lentelėms.
Duomenų bazės „vienas su vienu“ ryšys
Ryšys „vienas su vienu“ reiškia, kad įrašas viename „Django“ modelyje yra susijęs su kitu įrašu kitame modelyje. Du įrašai priklauso vienas nuo kito. Šiuo atveju, Profilio modelis priklauso nuo Vartotojo modelis sukurti gyventojų profilius.
Taigi kiekvienam programėlėje užsiregistravusiam gyventojui gali būti tik vienas profilis. Be to, be vartotojo profilis negali egzistuoti.
iš django.db importuoti modeliai
išdjango.indėlis.auth.modeliaiimportuotiVartotojasklasėProfilis(modeliai. Modelis):
vartotojas = modeliai. OneToOneField (vartotojas, on_delete=models. CASCADE, related_name='profilį')
pavadinimas = modeliai. CharField (max_length=80, tuščia =Tiesa)
biografija = modeliai. Teksto laukas (max_length=254, tuščia =Tiesa)
profile_picture = CloudinaryField('Profilio nuotrauka', numatytasis ='default.png')
vieta = modeliai. CharField (max_length=50, tuščia =Tiesa, nulinis=Tiesa)
paštas = modeliai. El. pašto laukas(nulinis=Tiesa)
def__str__(savarankiškai):
grąžinti f'{savarankiškai.user.username} profilis“
Django vartotojo modelis yra Django įtaisytas autentifikavimo modelis. Tam nereikia kurti modelio. Vietoj to importuokite jį iš django.contrib.auth. The OneToOneField() ant Profilio modelis apibrėžia ryšį vienas su vienu.
The on_delete=modeliai. KASKADA argumentas neleidžia ištrinti vieno iš šių įrašų. Turite ištrinti abiejų lentelių įrašus.
Galite naudoti „Django“ administratoriaus sąsają norėdami vizualizuoti ryšį savo programoje. Norėdami prisijungti prie Django admin, turite užsiregistruoti kaip administratorius, žinomas kaip a supervartotojas.
Sukurkite supervartotoją terminale paleisdami šią komandą:
pitonasvaldyti.pysukurti supervartotoją
Bus paraginta įvesti vartotojo vardą, el. pašto adresą ir slaptažodį. Kai tai padarysite, paleiskite serverį.
Atidarykite administratoriaus puslapį naršyklėje naudodami URL http://127.0.0.1:8000/admin.
Pamatysite administratoriaus puslapį, kuriame galėsite prisijungti naudodami anksčiau sukurtas kredencialus. Prisijungę pamatysite Grupės ir Vartotojai objektų. Django autentifikavimo sistema valdo šiuos du modelius. Apačioje pamatysite Profilio modelis.
Atidaryk Profilis modelį ir pridėkite profilį. Pamatysite, kad jis atrodo taip:
Atkreipkite dėmesį, kad turite galimybę sukurti vartotojo profilį. Duomenų tipas OneToOneField() leidžia kurti profilius autentifikuotiems vartotojams. Taip programa administruoja „vienas su vienu“ santykius.
„Vienas su daugeliu“ santykiai
Ryšys „vienas su daugeliu“ reiškia, kad vienas modelio įrašas susiejamas su daugeliu įrašų kitame modelyje. Tai taip pat vadinama „daug su vienu“ santykiais.
Jūsų atveju vienas administratorius gali sukurti kelias apylinkes. Bet kiekviena kaimynystė gali priklausyti tik vienam administratoriui. Norėdami apibrėžti tokį ryšį, galite naudoti duomenų tipą ForeignKey.
„Django“ turi integruotą administratoriaus sąsają. Tam nereikia kurti modelio. Administratorius turi teisę valdyti turinį ir vizualizuoti programėlę iš administratoriaus skydelio.
Modelis, kuriame telpa daug įrašų, turės Svetimas raktas. Jis apibrėžia santykius kaip vienas su daugeliu. Žemiau pateiktas kodas rodo, kur įdėti raktą.
klasėkaimynystėje(modeliai. Modelis):
admin = modeliai. Svetimas raktas("Profilis", on_delete=models. CASCADE, related_name='gaubtas')
pavadinimas = modeliai. CharField (maks._ilgis = 50)
vieta = modeliai. CharField (maks._ilgis = 60)
hood_logo = CloudinaryField('hood_logo', numatytasis ='default.png')
aprašymas = modeliai. Teksto laukas()
sveikata_pasakoti = modeliai. IntegerField(nulinis=Tiesa, tuščia =Tiesa)
policijos_numeris = modeliai. IntegerField(nulinis=Tiesa, tuščia =Tiesa)
Skaičius = modeliai. IntegerField(nulinis=Tiesa, tuščia =Tiesa)
def__str__(savarankiškai):
grąžinti f'{savarankiškai.name} gaubtas'
Programoje galite matyti ryšį, kaip parodyta paveikslėlyje:
The Kaimynystė modelis dabar turi administratorių. Kad kiekvienas galėtų kurti kaimynystę, jis turi turėti administratoriaus teises. Ir vienoje kaimynystėje negali būti daug administratorių.
Duomenų bazių ryšiai „daugelis su daugeliu“.
Santykiuose su daugybe, daugelis vieno modelio įrašų susieja su kitais kito modelio įrašais. Pavyzdžiui, Įrašas ir Verslas modeliai gali turėti kelis vienas kito įrašus. Vartotojai savo įrašuose gali pateikti keletą verslo skelbimų ir atvirkščiai.
Tačiau kuriant ryšius „daugelis su daugeliu“, duomenys gali būti netikslūs. Kitose sistemose turėsite sukurti naują lentelę, kad sujungtumėte dvi lenteles.
Django turi tam sprendimą. Kai naudojate lauką „daug su daug“, jis sukuria naują lentelę, susiejančią dvi lenteles. Lauką „daug su daug“ galite įtraukti į bet kurį iš dviejų modelių, tačiau jis neturėtų būti abiejuose modeliuose.
klasėĮrašas(modeliai. Modelis):
pavadinimas = modeliai. CharField (max_length=120, nulinis=Tiesa)
paštas = modeliai. Teksto laukas()
data = modeliai. DateTimeField (auto_now_add=Tiesa)
vartotojas = modeliai. ForeignKey (profilis, on_delete=models. CASCADE, related_name='post_owner')
gaubtas = modeliai. ForeignKey (NeighbourHood, on_delete=models. CASCADE, related_name='hood_post')
verslas = modeliai. ManyToManyField (verslas)
def__str__(savarankiškai):
grąžinti f'{savarankiškai.title} įrašas“
Dabar, kai žiūrite Įrašas modelį administratoriaus skydelyje, prie vieno įrašo galite pridėti kelias įmones.
Django supaprastina duomenų bazių ryšius
Duomenų bazės tipas, kurį naudojate savo programai, lemia, kaip panaudoti duomenis. „Django“ turi išsamią sistemą, kuri palengvina reliacinių duomenų bazių prijungimą ir valdymą.
Django funkcijos leidžia lengvai saugoti ir gauti duomenis iš susijusių lentelių. Jame yra integruotos API, kurios jungiasi ir sukuria duomenų bazių ryšius jūsų programai.
Duomenų bazės ryšiai lemia jūsų programos elgseną. Tai, ar naudojate santykius „vienas su vienu“, „vienas su daugeliu“, ar „daugelis su daugeliu“, priklauso nuo jūsų.
Naudodami „Django“ galite konfigūruoti ir išbandyti funkcijas nepažeisdami programos. Naudokite „Django“, kad apsaugotumėte duomenų bazių sistemas ir optimizuotumėte savo kūrėjo patirtį.