Comprendre les relacions de bases de dades a Django

Comprendre les relacions de bases de dades a Django
Lectors com tu ajuden a donar suport a MUO. Quan feu una compra mitjançant enllaços al nostre lloc, podem guanyar una comissió d'afiliats.

Una relació de base de dades descriu la connexió entre diferents taules de bases de dades. Les relacions determinen com emmagatzemar i recuperar les dades. Django funciona bé amb sistemes de bases de dades relacionals (RDBMS). Per tant, admet relacions de taules de base de dades.





Els tipus de relacions depenen dels requisits de la vostra aplicació i de les dades que modela. Les bones relacions entre els models Django i la base de dades milloren el manteniment de les dades. Això inclou millorar el rendiment de les consultes i reduir la duplicació de dades.





MAKEUSEO VÍDEO DEL DIA

Podeu esbrinar com les relacions de bases de dades de Django afecten el rendiment de l'aplicació explorant els tres tipus principals de relacions.





Relacions amb bases de dades

Els sistemes de bases de dades relacionals admeten tres tipus de relacions de bases de dades. Aquestes relacions són un a molts, molts a molts i un a un. El tipus de relació de base de dades afecta els casos d'ús de la vostra aplicació.

Models Django representen taules de bases de dades a l'aplicació. Heu de crear bones relacions entre taules per crear un bon sistema de bases de dades. Les relacions de base de dades determinen com emmagatzemar i presentar les dades a la vostra aplicació.



què fer amb un ordinador nou

Per entendre les relacions de bases de dades, comenceu per creant un projecte Django nomenat Caputxes. L'aplicació serà una xarxa social de barri. Gestionarà les activitats socials, de seguretat i de negocis de diferents barris.

Els residents poden registrar-se, iniciar sessió i crear perfils. També poden crear publicacions i anuncis comercials perquè tothom els vegi.





Per començar, creeu una base de dades que emmagatzemarà totes les dades del barri. Aleshores, creareu els models Perfil, Barri, Negoci i Publicació. Per crear els models, heu de determinar la relació que necessiten les taules de la base de dades.

Relació de bases de dades un a un

Una relació un a un implica que un registre en un model de Django es relaciona amb un altre registre en un altre model. Els dos registres depenen l'un de l'altre. En aquest cas, el Model de perfil depèn de la Model d'usuari per crear perfils de resident.





Així, només hi pot haver un perfil per a cada resident registrat a l'aplicació. A més, sense un usuari, un perfil no pot existir.

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'

Model d'usuari de Django és un model d'autenticació integrat a Django. No cal crear-ne un model. En lloc d'això, importeu-lo de django.contrib.auth. El OneToOneField() a la Model de perfil defineix una relació un a un.

El on_delete=models.CASCADE L'argument impedeix la supressió d'un d'aquests registres. Heu de suprimir els registres de les dues taules.

Podeu utilitzar la interfície d'administració de Django per visualitzar la relació a la vostra aplicació. Per iniciar sessió a Django admin, us heu de registrar com a usuari administrador conegut com a superusuari .

Creeu un superusuari executant l'ordre següent al terminal:

python manage.py createsuperuser

Se us demanarà que introduïu el vostre nom d'usuari, correu electrònic i contrasenya. Un cop ho hàgiu fet, inicieu el servidor.

Obriu la pàgina d'administració en un navegador mitjançant l'URL http://127.0.0.1:8000/admin.

com comprovar si hi ha virus o programari maliciós a l'iPhone

Veureu la pàgina d'administració on podeu iniciar sessió amb les credencials que heu creat anteriorment. Un cop iniciat sessió, veureu el Grups i Usuaris objectes. El marc d'autenticació de Django gestiona aquests dos models. A la part inferior, veureu el Model de perfil.

Obriu el Perfil model i procediu a afegir un perfil. Veureu que apareix de la següent manera:

  L'administrador de Django mostra la relació entre el perfil i els models d'usuari

Tingueu en compte que teniu l'opció de crear un perfil per a un usuari. El tipus de dades OneToOneField() us permet crear perfils per a usuaris autenticats. Així és com l'aplicació administra les relacions un a un.

Relacions un a molts

A La relació un a molts implica que un registre d'un model s'associa amb molts registres d'un altre model. També es coneix com una relació de molts a un.

En el vostre cas, un administrador pot crear diversos barris. Però cada barri només pot pertànyer a un administrador. Podeu utilitzar el tipus de dades ForeignKey per definir aquesta relació.

Django té una interfície d'administració integrada. No cal crear-ne un model. L'administrador té el dret de gestionar el contingut i visualitzar l'aplicació des del tauler d'administració.

El model que acomoda molts registres tindrà el Clau estrangera . Defineix la relació com a un a molts. El codi següent mostra on col·locar la clau.

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'

Podeu veure la relació a l'aplicació tal com es mostra a la imatge:

  El model de barri mostra l'opció d'administrador afegida

El Barri model ara té un administrador. Perquè qualsevol persona pugui crear un barri, ha de tenir drets d'administrador. I un barri no pot tenir molts administradors.

Relacions de bases de dades de molts a molts

En molts-a-molts relacions, molts registres en un model s'associen amb altres en un altre. Per exemple, el Publicació i Negocis Els models poden tenir diversos registres els uns dels altres. Els usuaris poden fer diversos anuncis comercials a les seves publicacions i viceversa.

Tanmateix, la creació de relacions de molts a molts pot conduir a dades inexactes. En altres marcs, hauríeu de crear una taula nova per unir les dues taules.

com desactivar ps4 amb el controlador

Django té una solució per a això. Quan utilitzeu el camp de molts a molts, es crea una taula nova que associa les dues taules juntes . Podeu posar el camp de molts a molts en qualsevol dels dos models, però no hauria de ser en ambdós models.

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'

Ara, quan visualitzeu el Publicació model al tauler d'administració, podeu adjuntar diverses empreses a una publicació.

  El model de publicació té l'opció d'afegir diverses empreses

Django simplifica les relacions de bases de dades

El tipus de base de dades que utilitzeu per a la vostra aplicació determina com aprofitar les dades. Django té un sistema complet que facilita la connexió i el funcionament de bases de dades relacionals.

Les funcions de Django faciliten l'emmagatzematge i la recuperació de dades de taules relacionades. Té API integrades que connecten i creen relacions de bases de dades per a la vostra aplicació.

Les relacions de bases de dades determinen el comportament de la vostra aplicació. Si utilitzeu relacions d'un a un, d'un a molts o de molts a molts depèn de vosaltres.

Amb Django, podeu configurar i provar funcions sense trencar la vostra aplicació. Utilitzeu Django per protegir els sistemes de bases de dades i optimitzar la vostra experiència de desenvolupador.