Cititorii ca tine ajută la sprijinirea MUO. Când efectuați o achiziție folosind link-uri de pe site-ul nostru, este posibil să câștigăm un comision de afiliat.

O relație de bază de date descrie conexiunea dintre diferite tabele de bază de date. Relațiile determină modul de stocare și preluare a datelor. Django funcționează bine cu sistemele de baze de date relaționale (RDBMS). Prin urmare, acceptă relațiile dintre tabelele bazei de date.

Tipurile de relații depind de cerințele aplicației dvs. și de datele pe care le modelează. Relațiile bune dintre modelele Django și baza de date îmbunătățesc întreținerea datelor. Aceasta include îmbunătățirea performanței interogărilor și reducerea dublării datelor.

Puteți afla cum relațiile cu bazele de date Django afectează performanța aplicației, explorând cele trei tipuri principale de relații.

Relații cu baze de date

Sistemele de baze de date relaționale acceptă trei tipuri de relații de baze de date. Aceste relații sunt unu-la-mulți, mulți-la-mulți și unu-la-unu. Tipul de relație de bază de date afectează cazurile de utilizare ale aplicației dvs.

instagram viewer

Modele Django reprezintă tabele de baze de date în aplicație. Trebuie să creați relații bune între tabele pentru a crea un sistem de baze de date bun. Relațiile cu bazele de date determină modul de stocare și prezentare a datelor în aplicația dvs.

Pentru a înțelege relațiile cu bazele de date, începeți prin crearea unui proiect Django numit Hote. Aplicația va fi o rețea socială de cartier. Acesta va gestiona activitățile sociale, securitatea și afacerile din diferite cartiere.

Rezidenții se pot înregistra, se pot conecta și pot crea profiluri. De asemenea, pot crea postări și reclame de afaceri pe care să le vadă toată lumea.

Pentru a începe, creați o bază de date care va stoca toate datele de cartier. Apoi, veți crea modelele Profil, NeighborHood, Business și Post. Pentru a crea modelele, trebuie să determinați relația de care au nevoie tabelele bazei de date.

Relația unu-la-unu cu baze de date

O relație unu-la-unu implică o înregistrare într-un model Django se referă la o altă înregistrare dintr-un alt model. Cele două înregistrări depind una de alta. În acest caz, Model de profil depinde de Model de utilizator pentru a crea profiluri rezidente.

Deci poate exista un singur profil pentru fiecare rezident înregistrat în aplicație. De asemenea, fără un utilizator, un profil nu poate exista.

din django.db import modele
dindjango.contribuire.auth.modeleimportUtilizator

clasăProfil(modele. Model):
utilizator = modele. OneToOneField (Utilizator, on_delete=modele. CASCADE, nume_relatat='profil')
nume = modele. CharField (lungime_max =80, gol=Adevărat)
bio = modele. TextField (lungime_max =254, gol=Adevărat)
profile_picture = CloudinaryField('poză de profil', implicit='implicit.png')
locație = modele. CharField (lungime_max =50, gol=Adevărat, nul=Adevărat)
email = modele. EmailField(nul=Adevărat)

def__str__(de sine):
întoarcere f'{de sineprofil .user.username}”

Modelul utilizatorului Django este un model de autentificare încorporat în Django. Nu trebuie să creați un model pentru el. În schimb, importați-l din django.contrib.auth. The OneToOneField() pe Model de profil definește o relație unu-la-unu.

The on_delete=modele. CASCADĂ argumentul împiedică ștergerea uneia dintre aceste înregistrări. Trebuie să ștergeți înregistrările din ambele tabele.

Puteți utiliza interfața de administrare Django pentru a vizualiza relația din aplicația dvs. Pentru a vă conecta la Django admin, trebuie să vă înregistrați ca utilizator admin cunoscut sub numele de a superutilizator.

Creați un superutilizator rulând următoarea comandă pe terminal:

pitonadministra.pycreatesuperuser

Va fi solicitat să vă introduceți numele de utilizator, e-mailul și parola. După ce ați făcut acest lucru, porniți serverul.

Deschideți pagina de administrare într-un browser folosind adresa URL http://127.0.0.1:8000/admin.

Veți vedea pagina de administrator unde vă puteți autentifica cu acreditările pe care le-ați creat mai devreme. Odată autentificat, veți vedea Grupuri și Utilizatori obiecte. Cadrul de autentificare Django gestionează aceste două modele. În partea de jos, veți vedea Model de profil.

Deschide Profil model și procedați la adăugarea unui profil. Veți vedea că va apărea după cum urmează:

Observați că aveți opțiunea de a crea un profil pentru un utilizator. Tipul de date OneToOneField() vă permite să creați profiluri pentru utilizatorii autentificați. Acesta este modul în care aplicația administrează relațiile unu-la-unu.

Relații unu-la-mulți

Relația unu-la-mulți implică faptul că o înregistrare dintr-un model se asociază cu mai multe înregistrări dintr-un alt model. De asemenea, este denumită o relație multi-la-unu.

În cazul dvs., un administrator poate crea mai multe cartiere. Dar fiecare cartier poate aparține unui singur administrator. Puteți utiliza tipul de date ForeignKey pentru a defini o astfel de relație.

Django are o interfață de administrare încorporată. Nu trebuie să creați un model pentru el. Administratorul are dreptul de a gestiona conținutul și de a vizualiza aplicația din panoul de administrare.

Modelul care găzduiește multe înregistrări va avea Cheie externă. Ea definește relația ca unul la mai mulți. Codul de mai jos arată unde să plasați cheia.

clasăCartier(modele. Model):
admin = modele. Cheie externă("Profil", on_delete=modele. CASCADE, nume_relatat='glugă')
nume = modele. CharField (lungime_max=50)
locație = modele. CharField (lungime_max.=60)
hood_logo = CloudinaryField('hood_logo', implicit='implicit.png')
descriere = modele. TextField()
health_tell = modele. IntegerField(nul=Adevărat, gol=Adevărat)
police_number = modele. IntegerField(nul=Adevărat, gol=Adevărat)
Count= modele. IntegerField(nul=Adevărat, gol=Adevărat)

def__str__(de sine):
întoarcere f'{de sine.name} glugă'

Puteți vedea relația în aplicație, așa cum este ilustrat în imagine:

The Cartier modelul are acum un administrator. Pentru ca oricine să creeze un cartier, trebuie să aibă drepturi de administrator. Și un cartier nu poate avea mulți administratori.

Relații multi-la-multe baze de date

În relațiile multi-la-mulți, multe înregistrări dintr-un model se asociază cu altele din altul. De exemplu, cel Post și Afaceri modelele pot avea mai multe înregistrări unul despre celălalt. Utilizatorii pot face mai multe reclame de afaceri în postările lor și invers.

Cu toate acestea, crearea de relații multi-la-multe poate duce la date inexacte. În alte cadre, ar trebui să creați un nou tabel pentru a uni cele două tabele.

Django are o soluție pentru asta. Când utilizați câmpul multi-la-mulți, se creează un nou tabel care mapează cele două tabele împreună. Puteți pune câmpul multi-la-mulți în oricare dintre cele două modele, dar nu ar trebui să fie în ambele modele.

clasăPost(modele. Model):
titlu = modele. CharField (lungime_max =120, nul=Adevărat)
post = modele. TextField()
data = modele. DateTimeField (auto_now_add=Adevărat)
utilizator = modele. ForeignKey (Profil, on_delete=models. CASCADE, nume_relatat='proprietar_post')
hood = modele. ForeignKey (NeighbourHood, on_delete=models. CASCADE, nume_relatat='hood_post')
business = modele. ManyToManyField (Afaceri)

def__str__(de sine):
întoarcere f'{de sine.title} post'

Acum, când vezi Post model pe panoul de administrare, puteți atașa mai multe afaceri la o postare.

Django simplifică relațiile cu bazele de date

Tipul de bază de date pe care îl utilizați pentru aplicația dvs. determină modul de valorificare a datelor. Django are un sistem cuprinzător care facilitează conectarea și operarea bazelor de date relaționale.

Caracteristicile Django facilitează stocarea și preluarea datelor din tabelele asociate. Are API-uri încorporate care conectează și creează relații de baze de date pentru aplicația ta.

Relațiile cu bazele de date determină comportamentul aplicației dvs. Depinde de tine dacă folosești relații unu-la-unu, unu-la-mulți sau mulți-la-mulți.

Cu Django, puteți configura și testa funcțiile fără a vă întrerupe aplicația. Utilizați Django pentru a securiza sistemele de baze de date și pentru a vă optimiza experiența de dezvoltator.