Izprotiet datu bāzu attiecības Django

Izprotiet datu bāzu attiecības Django
Tādi lasītāji kā jūs palīdz atbalstīt MUO. Veicot pirkumu, izmantojot saites mūsu vietnē, mēs varam nopelnīt filiāles komisiju.

Datu bāzes attiecības apraksta savienojumu starp dažādām datu bāzes tabulām. Attiecības nosaka, kā uzglabāt un izgūt datus. Django labi darbojas ar relāciju datu bāzu sistēmām (RDBMS). Tāpēc tas atbalsta datu bāzes tabulu attiecības.





Attiecību veidi ir atkarīgi no jūsu lietojumprogrammas prasībām un tajā modelētajiem datiem. Labas attiecības starp Django modeļiem un datubāzi uzlabo datu uzturēšanu. Tas ietver vaicājumu veiktspējas uzlabošanu un datu dublēšanās samazināšanu.





DIENAS VIDEO MAKEUSEOF

Varat uzzināt, kā Django datu bāzes attiecības ietekmē lietojumprogrammu veiktspēju, izpētot trīs galvenos attiecību veidus.





Datu bāzu attiecības

Relāciju datu bāzu sistēmas atbalsta trīs datu bāzes attiecību veidus. Šīs attiecības ir viens pret daudziem, daudzi pret daudziem un viens pret vienu. Datu bāzes relācijas veids ietekmē jūsu lietojumprogrammas lietošanas gadījumus.

Django modeļi apzīmē datu bāzes tabulas lietotnē. Lai izveidotu labu datu bāzes sistēmu, starp tabulām ir jāizveido labas attiecības. Datu bāzes relācijas nosaka, kā saglabāt un parādīt datus jūsu lietojumprogrammā.



Lai izprastu datu bāzes attiecības, sāciet ar izveidojot Django projektu nosaukts Kapuces. Lietotne būs apkārtnes sociālais tīkls. Tas pārvaldīs dažādu mikrorajonu sociālās aktivitātes, drošību un uzņēmumus.

Iedzīvotāji var reģistrēties, pierakstīties un izveidot profilus. Viņi var arī izveidot ziņas un biznesa sludinājumus, lai ikviens to varētu redzēt.





Lai sāktu, izveidojiet datu bāzi, kurā tiks saglabāti visi apkārtnes dati. Pēc tam jūs izveidosit modeļus Profils, NeighborHood, Business un Post. Lai izveidotu modeļus, ir jānosaka datu bāzes tabulām nepieciešamās attiecības.

Viena pret vienu datu bāzes attiecības

Attiecības viens pret vienu nozīmē, ka ieraksts vienā Django modelī ir saistīts ar citu ierakstu citā modelī. Abi ieraksti ir atkarīgi viens no otra. Šajā gadījumā, Profila modelis atkarīgs no Lietotāja modelis lai izveidotu rezidentu profilus.





Tāpēc katram lietotnē reģistrētajam iedzīvotājam var būt tikai viens profils. Turklāt bez lietotāja profils nevar pastāvēt.

from django.db import models 
from django.contrib.auth.models import User

class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile')
name = models.CharField(max_length=80, blank=True)
bio = models.TextField(max_length=254, blank=True)
profile_picture = CloudinaryField('profile_picture', default='default.png')
location = models.CharField(max_length=50, blank=True, null=True)
email = models.EmailField(null=True)

def __str__(self):
return f'{self.user.username} profile'

Django lietotāja modelis ir Django iebūvēts autentifikācijas modelis. Jums tam nav jāizveido modelis. Tā vietā importējiet to no django.contrib.auth. The OneToOneField() uz Profila modelis definē attiecības viens pret vienu.

The on_delete=modeļi.KASKĀDE arguments neļauj dzēst kādu no šiem ierakstiem. Jums ir jāizdzēš ieraksti no abām tabulām.

Varat izmantot Django administratora saskarni, lai vizualizētu attiecības savā lietotnē. Lai pieteiktos Django admin, jums jāreģistrējas kā administratora lietotājam, kas pazīstams kā a superlietotājs .

Izveidojiet superlietotāju, terminālī izpildot šādu komandu:

kā noteikt, vai kāds izmanto inkognito režīmu
python manage.py createsuperuser

Tiks parādīts aicinājums ievadīt lietotājvārdu, e-pastu un paroli. Kad tas ir izdarīts, palaidiet serveri.

Pārlūkprogrammā atveriet administratora lapu, izmantojot vietrādi URL http://127.0.0.1:8000/admin.

Jūs redzēsit administratora lapu, kurā varēsit pieteikties ar iepriekš izveidotajiem akreditācijas datiem. Kad esat pieteicies, jūs redzēsit Grupas un Lietotāji objektus. Django autentifikācijas sistēma pārvalda šos divus modeļus. Apakšā jūs redzēsit Profila modelis.

Atveriet Profils modeli un turpiniet pievienot profilu. Jūs redzēsiet, kā tas izskatās šādi:

  Django administrators parāda saistību starp profilu un lietotāju modeļiem

Ņemiet vērā, ka jums ir iespēja izveidot lietotāja profilu. Datu tips OneToOneField() ļauj izveidot profilus autentificētiem lietotājiem. Šādi lietotne pārvalda savstarpējās attiecības.

Attiecības viens pret daudziem

A Attiecības viens pret daudziem nozīmē, ka viens ieraksts modelī ir saistīts ar daudziem ierakstiem citā modelī. Tās tiek sauktas arī par daudzpusējām attiecībām.

Jūsu gadījumā viens administrators var izveidot vairākas apkaimes. Bet katra apkaime var piederēt tikai vienam administratoram. Lai definētu šādas attiecības, varat izmantot datu tipu ForeignKey.

Django ir iebūvēts administratora interfeiss. Jums tam nav jāizveido modelis. Administratoram ir tiesības pārvaldīt saturu un vizualizēt lietotni no administratora paneļa.

Modelim, kurā ir daudz ierakstu, būs Sveša atslēga . Tas definē attiecības kā viens pret daudziem. Tālāk redzamais kods parāda, kur novietot atslēgu.

class NeighbourHood(models.Model): 
admin = models.ForeignKey("Profile", on_delete=models.CASCADE, related_name='hood')
name = models.CharField(max_length=50)
location = models.CharField(max_length=60)
hood_logo = CloudinaryField('hood_logo', default='default.png')
description = models.TextField()
health_tell = models.IntegerField(null=True, blank=True)
police_number = models.IntegerField(null=True, blank=True)
Count= models.IntegerField(null=True, blank=True)

def __str__(self):
return f'{self.name} hood'

Jūs varat redzēt attiecības lietotnē, kā parādīts attēlā:

  Apkaimes modelī ir pievienota administratora izvēle

The Kaimiņvalsts modelim tagad ir administrators. Lai ikviens varētu izveidot apkaimi, viņam ir jābūt administratora tiesībām. Un vienā apkaimē nevar būt daudz administratoru.

Daudzu pret daudziem datu bāzu attiecības

Daudzos pret daudziem attiecības, daudzi ieraksti vienā modelī asociējas ar citiem citā. Piemēram, Post un Bizness modeļiem var būt vairāki viens otra ieraksti. Lietotāji savos ierakstos var ievietot vairākas biznesa reklāmas un otrādi.

Tomēr daudzu pret daudziem attiecību izveide var radīt neprecīzus datus. Citos ietvaros jums būtu jāizveido jauna tabula, lai savienotu abas tabulas.

Django tam ir risinājums. Ja izmantojat lauku daudzi pret daudziem, tiek izveidota jauna tabula, kurā abas tabulas tiek kartētas kopā . Lauku “daudzi pret daudziem” varat ievietot jebkurā no diviem modeļiem, taču tam nevajadzētu būt abos modeļos.

class Post(models.Model): 
title = models.CharField(max_length=120, null=True)
post = models.TextField()
date = models.DateTimeField(auto_now_add=True)
user = models.ForeignKey(Profile, on_delete=models.CASCADE, related_name='post_owner')
hood = models.ForeignKey(NeighbourHood, on_delete=models.CASCADE, related_name='hood_post')
business = models.ManyToManyField(Business)

def __str__(self):
return f'{self.title} post'

Tagad, kad skatāties Post modeli administrēšanas panelī, vienai ziņai varat pievienot vairākus uzņēmumus.

kā atrisināt mainīgo programmā Excel
  Pasta modelim ir iespēja pievienot vairākus uzņēmumus

Django vienkāršo datu bāzu attiecības

Datu bāzes veids, kuru izmantojat savai lietojumprogrammai, nosaka, kā izmantot datus. Django ir visaptveroša sistēma, kas atvieglo relāciju datu bāzu savienošanu un darbību.

Django funkcijas atvieglo datu glabāšanu un izgūšanu no saistītajām tabulām. Tam ir iebūvētas API, kas savieno un izveido datu bāzes attiecības jūsu lietotnei.

Datu bāzes attiecības nosaka jūsu lietojumprogrammas darbību. Tas, vai izmantojat attiecības viens pret vienu, viens pret daudziem vai daudzi pret daudziem, ir atkarīgs no jums.

Izmantojot Django, varat konfigurēt un pārbaudīt funkcijas, nepārkāpjot lietojumprogrammu. Izmantojiet Django, lai aizsargātu datu bāzes sistēmas un optimizētu savu izstrādātāja pieredzi.