Lectores como tú ayudan a apoyar a MUO. Cuando realiza una compra utilizando enlaces en nuestro sitio, podemos ganar una comisión de afiliado.
Una relación de base de datos describe la conexión entre diferentes tablas de bases de datos. Las relaciones determinan cómo almacenar y recuperar datos. Django funciona bien con sistemas de bases de datos relacionales (RDBMS). Por lo tanto, admite relaciones de tablas de bases de datos.
Los tipos de relaciones dependen de los requisitos de su aplicación y de los datos que modela. Las buenas relaciones entre los modelos de Django y la base de datos mejoran el mantenimiento de los datos. Eso incluye mejorar el rendimiento de las consultas y reducir la duplicación de datos.
Puede aprender cómo las relaciones de la base de datos de Django afectan el rendimiento de la aplicación explorando los tres tipos principales de relaciones.
Relaciones de base de datos
Los sistemas de bases de datos relacionales admiten tres tipos de relaciones de bases de datos. Estas relaciones son uno a muchos, muchos a muchos y uno a uno. El tipo de relación de la base de datos afecta los casos de uso de su aplicación.
modelos Django representar tablas de base de datos en la aplicación. Debe crear buenas relaciones entre tablas para crear un buen sistema de base de datos. Las relaciones de la base de datos determinan cómo almacenar y presentar los datos en su aplicación.
Para comprender las relaciones de la base de datos, empiece por creando un proyecto Django llamado Capuchas. La aplicación será una red social vecinal. Gestionará las actividades sociales, la seguridad y los negocios de varios barrios.
Los residentes pueden registrarse, iniciar sesión y crear perfiles. También pueden crear publicaciones y anuncios comerciales para que todos los vean.
Para comenzar, cree una base de datos que almacenará todos los datos del vecindario. Luego, creará los modelos Profile, NeighborHood, Business y Post. Para crear los modelos, debe determinar la relación que necesitan las tablas de la base de datos.
Relación de base de datos uno a uno
Una relación uno a uno implica que un registro en un modelo de Django se relaciona con otro registro en otro modelo. Los dos registros dependen uno del otro. En este caso, el modelo de perfil depende de modelo de usuario para crear perfiles de residentes.
Por lo tanto, solo puede haber un perfil para cada residente registrado en la aplicación. Además, sin un usuario, no puede existir un perfil.
de django.db importar modelos
deDjango.contrib.auth.modelosimportarUsuarioclasePerfil(modelos. Modelo):
usuario = modelos. OneToOneField (Usuario, on_delete=models. CASCADA, nombre_relacionado='perfil')
nombre = modelos. CharField (longitud_máxima=80, en blanco =Verdadero)
bio = modelos. campo de texto (max_length=254, en blanco =Verdadero)
imagen_perfil = Camponublado('foto de perfil', predeterminado='por defecto.png')
ubicación = modelos. CharField (longitud_máxima=50, en blanco =Verdadero, nulo=Verdadero)
correo electrónico = modelos. Campo de correo electrónico (nulo=Verdadero)
definitivamente__str__(ser):
devolver F'{ser.user.username} perfil'
Modelo de usuario de Django es un modelo de autenticación incorporado en Django. No tienes que crear un modelo para ello. En su lugar, impórtelo desde django.contrib.auth. El Uno a un campo () sobre el modelo de perfil define una relación uno a uno.
El on_delete=modelos. CASCADA argumento impide la eliminación de uno de estos registros. Debe eliminar los registros de ambas tablas.
Puede usar la interfaz de administración de Django para visualizar la relación en su aplicación. Para iniciar sesión en el administrador de Django, debe registrarse como un usuario administrador conocido como superusuario.
Cree un superusuario ejecutando el siguiente comando en la terminal:
pitónadministrar.pycrear superusuario
Habrá un mensaje para ingresar su nombre de usuario, correo electrónico y contraseña. Una vez que lo haya hecho, inicie el servidor.
Abra la página de administración en un navegador usando la URL http://127.0.0.1:8000/admin.
Verá la página de administración donde puede iniciar sesión con las credenciales que creó anteriormente. Una vez que haya iniciado sesión, verá la Grupos y Usuarios objetos. El marco de autenticación de Django administra estos dos modelos. En la parte inferior, verá el modelo de perfil.
Abre el Perfil modelo y proceder a agregar un perfil. Verás que aparece de la siguiente manera:
Observe que tiene la opción de crear un perfil para un usuario. El tipo de datos OneToOneField() le permite crear perfiles para usuarios autenticados. Así es como la aplicación administra las relaciones uno a uno.
Relaciones de uno a muchos
Una relación de uno a muchos implica que un registro en un modelo se asocia con muchos registros en otro modelo. También se conoce como una relación de muchos a uno.
En su caso, un administrador puede crear varios vecindarios. Pero cada vecindario solo puede pertenecer a un administrador. Puede utilizar el tipo de datos ForeignKey para definir dicha relación.
Django tiene una interfaz de administración incorporada. No tienes que crear un modelo para ello. El administrador tiene derecho a administrar el contenido y visualizar la aplicación desde el panel de administración.
El modelo que acomoda muchos récords tendrá la Clave externa. Define la relación como uno a muchos. El siguiente código muestra dónde colocar la llave.
claseVecindario(modelos. Modelo):
admin = modelos. Clave externa("Perfil", on_delete=modelos. CASCADA, nombre_relacionado='capucha')
nombre = modelos. CharField (longitud_máxima=50)
ubicación = modelos. CharField (longitud_máxima=60)
hood_logo = CloudinaryField('capucha_logo', predeterminado='por defecto.png')
descripción = modelos. Campo de texto()
health_tell = modelos. CampoEntero(nulo=Verdadero, en blanco =Verdadero)
número_policía = modelos. CampoEntero(nulo=Verdadero, en blanco =Verdadero)
Contar= modelos. CampoEntero(nulo=Verdadero, en blanco =Verdadero)
definitivamente__str__(ser):
devolver F'{ser.name} capucha'
Puede ver la relación en la aplicación como se ilustra en la imagen:
El Vecindario modelo ahora tiene un administrador. Para que cualquiera pueda crear un vecindario, debe tener derechos de administrador. Y un barrio no puede tener muchos administradores.
Relaciones de base de datos de muchos a muchos
En las relaciones de muchos a muchos, muchos registros en un modelo se asocian con otros en otro. por ejemplo, el Correo y Negocio Los modelos pueden tener varios registros entre sí. Los usuarios pueden hacer varios anuncios comerciales en sus publicaciones y viceversa.
Sin embargo, la creación de relaciones de muchos a muchos puede dar lugar a datos inexactos. En otros marcos, tendría que crear una nueva tabla para unir las dos tablas.
Django tiene una solución para esto. Cuando usa el campo muchos a muchos, crea una nueva tabla que asigna las dos tablas juntas. Puede colocar el campo muchos a muchos en cualquiera de los dos modelos, pero no debería estar en ambos modelos.
claseCorreo(modelos. Modelo):
título = modelos. CharField (longitud_máxima=120, nulo=Verdadero)
puesto = modelos. Campo de texto()
fecha = modelos. Campo de fecha y hora (auto_now_add=Verdadero)
usuario = modelos. ForeignKey (Perfil, on_delete=models. CASCADA, nombre_relacionado='propietario_de_la_publicación')
capucha = modelos. ForeignKey (Vecindario, on_delete=models. CASCADA, nombre_relacionado='hood_post')
negocio = modelos. ManyToManyField (Empresa)
definitivamente__str__(ser):
devolver F'{ser.title} publicación'
Ahora, cuando veas el Correo modelo en el panel de administración, puede adjuntar varias empresas a una publicación.
Django simplifica las relaciones de la base de datos
El tipo de base de datos que utiliza para su aplicación determina cómo aprovechar los datos. Django tiene un sistema completo que facilita la conexión y el funcionamiento de las bases de datos relacionales.
Las funciones de Django facilitan el almacenamiento y la recuperación de datos de tablas relacionadas. Tiene API integradas que se conectan y crean relaciones de base de datos para su aplicación.
Las relaciones de la base de datos determinan el comportamiento de su aplicación. Depende de usted si utiliza relaciones de uno a uno, de uno a muchos o de muchos a muchos.
Con Django, puede configurar y probar funciones sin romper su aplicación. Utilice Django para proteger los sistemas de bases de datos y optimizar su experiencia como desarrollador.