Čitatelji poput vas podržavaju MUO. Kada kupite putem poveznica na našoj stranici, možemo zaraditi partnersku proviziju.
Odnos baze podataka opisuje vezu između različitih tablica baze podataka. Odnosi određuju kako pohraniti i dohvatiti podatke. Django dobro radi sa sustavima relacijskih baza podataka (RDBMS). Stoga podržava odnose tablica baze podataka.
Vrste odnosa ovise o zahtjevima vaše aplikacije i podacima koje modelira. Dobri odnosi između Django modela i baze podataka poboljšavaju održavanje podataka. To uključuje poboljšanje izvedbe upita i smanjenje dupliciranja podataka.
Možete naučiti kako odnosi Django baze podataka utječu na performanse aplikacije istražujući tri glavne vrste odnosa.
Odnosi baze podataka
Sustavi relacijskih baza podataka podržavaju tri vrste odnosa baza podataka. Ti odnosi su jedan-na-više, mnogo-na-više i jedan-na-jedan. Vrsta relacije baze podataka utječe na slučajeve korištenja vaše aplikacije.
Django modeli predstavljaju tablice baze podataka u aplikaciji. Morate stvoriti dobre odnose između tablica da biste stvorili dobar sustav baze podataka. Relacije baze podataka određuju kako pohraniti i prikazati podatke u vašoj aplikaciji.
Da biste razumjeli odnose baze podataka, počnite od stvaranje Django projekta imenovani nape. Aplikacija će biti društvena mreža susjedstva. Upravljat će različitim društvenim aktivnostima, sigurnošću i poslovima u susjedstvu.
Stanovnici se mogu registrirati, prijaviti i stvoriti profile. Također mogu stvarati objave i poslovne oglase koje svi mogu vidjeti.
Za početak napravite bazu podataka koja će pohranjivati sve podatke o susjedstvu. Zatim ćete izraditi modele Profil, NeighborHood, Business i Post. Da biste kreirali modele, morate odrediti odnos koji je potreban tablicama baze podataka.
Odnos baze podataka jedan-na-jedan
Odnos jedan-na-jedan podrazumijeva da se zapis u jednom Django modelu odnosi na drugi zapis u drugom modelu. Dva zapisa ovise jedan o drugome. U ovom slučaju, Model profila ovisi o Korisnički model za izradu rezidentnih profila.
Dakle, može postojati samo jedan profil za svakog stanovnika registriranog u aplikaciji. Također, bez korisnika profil ne može postojati.
iz django.db uvoz modeli
izdjango.pridonositi.auth.modeliuvozKorisnikrazredaProfil(modeli. Model):
korisnik = modeli. OneToOneField (Korisnik, on_delete=modeli. CASCADE, srodno_ime='profil')
ime = modeli. CharField (max_length=80, prazno=Pravi)
bio = modeli. TextField (max_length=254, prazno=Pravi)
profile_picture = CloudinaryField('profilna slika', zadano='zadano.png')
lokacija = modeli. CharField (max_length=50, prazno=Pravi, ništavan=Pravi)
email = modeli. EmailField(ništavan=Pravi)
def__str__(sebe):
povratak f'{sebe.user.username} profil'
Djangov korisnički model je ugrađeni model provjere autentičnosti u Djangu. Ne morate izraditi model za to. Umjesto toga, uvezite ga iz django.contrib.auth. The OneToOneField() na Model profila definira odnos jedan na jedan.
The on_delete=modeli. KASKADA argument sprječava brisanje jednog od tih zapisa. Morate izbrisati zapise iz obje tablice.
Možete koristiti Django administratorsko sučelje za vizualizaciju odnosa u vašoj aplikaciji. Da biste se prijavili na Django admin, morate se registrirati kao admin korisnik poznat kao a superkorisnik.
Stvorite superkorisnika pokretanjem sljedeće naredbe na terminalu:
pitonupravljati.pystvoriti superkorisnika
Pojavit će se upit za unos korisničkog imena, e-pošte i lozinke. Nakon što to učinite, pokrenite poslužitelj.
Otvorite stranicu administratora u pregledniku koristeći URL http://127.0.0.1:8000/admin.
Vidjet ćete administratorsku stranicu na kojoj se možete prijaviti s vjerodajnicama koje ste prethodno izradili. Nakon što se prijavite, vidjet ćete grupe i Korisnici objekti. Django okvir za provjeru autentičnosti upravlja ova dva modela. Na dnu ćete vidjeti Model profila.
Otvori Profil model i nastavite s dodavanjem profila. Vidjet ćete da se pojavljuje na sljedeći način:
Imajte na umu da imate opciju kreiranja profila za korisnika. Tip podataka OneToOneField() omogućuje vam stvaranje profila za autentificirane korisnike. Ovo je način na koji aplikacija upravlja odnosima jedan na jedan.
Odnosi jedan prema više
Odnos jedan-prema-više podrazumijeva da je jedan zapis u modelu povezan s mnogim zapisima u drugom modelu. Naziva se i odnosom više prema jedan.
U vašem slučaju, jedan administrator može stvoriti nekoliko susjedstava. Ali svako susjedstvo može pripadati samo jednom administratoru. Za definiranje takvog odnosa možete koristiti tip podataka ForeignKey.
Django ima ugrađeno administratorsko sučelje. Ne morate izraditi model za to. Administrator ima pravo upravljati sadržajem i vizualizirati aplikaciju iz administratorske ploče.
Model koji prima mnoge zapise imat će Strani kljuc. Definira odnos kao jedan prema više. Donji kod pokazuje gdje staviti ključ.
razredaSusjedstvo(modeli. Model):
admin = modeli. Strani kljuc("Profil", on_delete=modeli. CASCADE, srodno_ime='napa')
ime = modeli. CharField (max_length=50)
lokacija = modeli. CharField (max_length=60)
hood_logo = CloudinaryField('hood_logo', zadano='zadano.png')
opis = modeli. Polje za tekst()
zdravlje_reci = modeli. IntegerField(ništavan=Pravi, prazno=Pravi)
policijski_broj = modeli. IntegerField(ništavan=Pravi, prazno=Pravi)
Broj= modeli. IntegerField(ništavan=Pravi, prazno=Pravi)
def__str__(sebe):
povratak f'{sebe.name} napa'
Možete vidjeti odnos na aplikaciji kao što je prikazano na slici:
The Susjedstvo model sada ima admina. Da bi bilo tko stvorio susjedstvo, mora imati administratorska prava. A jedno susjedstvo ne može imati puno administratora.
Odnosi baze podataka više-prema-više
U odnosima više-prema-više, mnogi zapisi u jednom modelu povezuju se s drugima u drugom. Na primjer, Post i Poslovanje modeli mogu imati nekoliko zapisa jedan o drugom. Korisnici mogu napraviti nekoliko poslovnih oglasa u svojim postovima i obrnuto.
Međutim, stvaranje odnosa više-prema-više može dovesti do netočnih podataka. U drugim okvirima, morali biste stvoriti novu tablicu da spojite dvije tablice.
Django ima rješenje za to. Kada koristite polje više-prema-više, ono stvara novu tablicu koja preslikava dvije tablice zajedno. Polje više-prema-više možete staviti u bilo koji od ova dva modela, ali ne bi trebalo biti u oba modela.
razredaPost(modeli. Model):
naslov = modeli. CharField (max_length=120, ništavan=Pravi)
post = modeli. Polje za tekst()
datum = modeli. DateTimeField (auto_now_add=Pravi)
korisnik = modeli. ForeignKey (Profil, on_delete=modeli. CASCADE, srodno_ime='vlasnik_posta')
napa = modeli. ForeignKey (NeighbourHood, on_delete=modeli. CASCADE, srodno_ime='stup_za kapuljaču')
posao = modeli. ManyToManyField (posao)
def__str__(sebe):
povratak f'{sebe.title} post'
Sada, kada pogledate Post modela na administratorskoj ploči, možete priložiti nekoliko tvrtki jednom postu.
Django pojednostavljuje odnose baze podataka
Vrsta baze podataka koju koristite za svoju aplikaciju određuje kako iskoristiti podatke. Django ima sveobuhvatan sustav koji olakšava povezivanje i rad s relacijskim bazama podataka.
Django značajke olakšavaju pohranjivanje i dohvaćanje podataka iz povezanih tablica. Ima ugrađene API-je koji povezuju i stvaraju odnose baze podataka za vašu aplikaciju.
Odnosi baze podataka određuju ponašanje vaše aplikacije. Hoćete li koristiti odnose jedan-na-jedan, jedan-na-više ili više-na-više ovisi o vama.
S Djangom možete konfigurirati i testirati značajke bez kvara svoje aplikacije. Koristite Django da osigurate sustave baza podataka i optimizirate svoje iskustvo programera.