Fundamentos de Django

1

¿Qué es Django?

2

¿Cómo instalar Django?

3

Entendiendo la arquitectura de Django

4

Qué es el patrón MVT (Model, View y Template)

La M en el Patrón: Modelo

5

Introducción a Modelos y Bases de Datos

Manejo Avanzado de Modelos y Bases de Datos

6

Gestión de Modelos y Bases de Datos en Django con SQLite

7

Inserción de Datos con Django

8

Actualización y Eliminación de Datos en Django

Relaciones y Asociaciones entre Modelos

9

Creación y Gestión de Relaciones entre Modelos en Django

10

Relaciones Muchos a Muchos (N:N) en Django

11

Relaciones Uno a Uno (1:1) en Django

12

Queries y Filtros en Django: Optimización y Estrategias Avanzadas

Configuración de URLs y Vistas Avanzadas

13

Gestión de URLs en Django: Configuración, Rutas y Mejores Prácticas

14

Vistas Basadas en Clases en Django

La T en el Patrón: Plantillas o Templates

15

Personalización de Interfaz con Plantillas en Django

Desarrollo de Aplicaciones en Django

16

Configuración del Proyectos en Django

17

Creación del Modelo para la Aplicación 'Products' en Django

18

Cómo Crear Migraciones de Datos en Django

19

Creación de la Aplicación 'Products' con Formularios en Django

20

Integracion de TailwindCSS en Django

21

Django Admin

22

Manejo de Sesiones en Django

23

Manejo de Órdenes en CoffeShop

24

Manejo de Pedidos en CoffeShop

25

Mixings en vistas basadas en clases

26

Agregar productos a la orden

Django Rest Framework

27

Django REST Framework

Despliegue de aplicaciones Django

28

Configurar PostgreSQL en AWS con Django

29

Variables de entorno en Django

30

¿Cómo usar Unit Testing en Django?

31

Debugging en Django

32

Desplegar aplicaciones de Django en AWS

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Convierte tus certificados en títulos universitarios en USA

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

17 Días
23 Hrs
10 Min
6 Seg
Curso de Django

Curso de Django

Luis Martínez

Luis Martínez

Relaciones Uno a Uno (1:1) en Django

11/32
Recursos

Explorar la relación uno a uno en Django puede parecer complejo, pero es fundamental para construir aplicaciones sólidas.

¿Cómo se crea una clase en Django?

Para empezar, imaginemos que tenemos una clase Profile que contiene información pública del autor. Este perfil incluirá:

  • Un campo de URL para el sitio web del autor.
  • Una biografía con un máximo de 500 caracteres.

Aquí está el código inicial para la clase Profile:

class Profile(models.Model):
    website = models.URLField(max_length=200)
    biography = models.TextField(max_length=500)
    author = models.OneToOneField(Author, on_delete=models.CASCADE)

¿Cómo se maneja la relación uno a uno?

Para relacionar el perfil con el autor, utilizamos OneToOneField. Esto asegura que cada autor tenga un solo perfil y viceversa. Además, agregamos el parámetro on_delete=models.CASCADE para que si se elimina un autor, también se elimine su perfil.

¿Cómo se crean y se sincronizan las migraciones?

  1. Crear migraciones: Ejecutamos python manage.py make migrations.
  2. Sincronizar con la base de datos: Usamos python manage.py migrate.

¿Cómo verificamos la creación de un perfil en la consola de Django?

  1. Abrir la shell de Django: Ejecutamos python manage.py shell.
  2. Importar los modelos: from myapp.models import Author, Profile.
  3. Buscar un autor existente: author = Author.objects.first().
  4. Crear un perfil:
    profile = Profile.objects.create(
        website="http://example.com",
        biography="Lorem Ipsum",
        author=author
    )
    

¿Cómo verificar los datos en la base de datos?

Usamos comandos SQL para verificar los datos:

SELECT * FROM myapp_profile WHERE author_id = 1;

¿Qué ocurre cuando se elimina un autor?

Si un autor se borra, su perfil también se eliminará gracias a on_delete=models.CASCADE.

Aportes 5

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Si quieren asignar una instancia que sea diferente a la primera, pueden usar el get() para hacerlo escribiendo el parametro de busqueda, en este caso, el ID. author2 = Author.objects.get(id = 2)
Cuando la linea de consola queda muy abajo, el icono que muestra al profe interfiere con lo que se escribe, en esta y queda uno con la duda de que va ahí, es solo solo una recomendación.
Comparto este ejemplo que me ayudo a entender más estos temas: ```python from django.db import models class Certificate(models.Model): company = models.CharField(max_length=100) # Mejor usar CharField para textos cortos title = models.CharField(max_length=200) link = models.URLField() def __str__(self): return f"{self.title} - {self.company} - {self.link}" class Department(models.Model): # Relación 1 a muchos con User name = models.CharField(max_length=100) description = models.TextField(max_length=300, blank=True) def __str__(self): return self.name class User(models.Model): name = models.CharField(max_length=100) email = models.EmailField() certificates = models.ManyToManyField(Certificate, related_name="users") # Relación muchos a muchos con Certificate department = models.ForeignKey(Department, on_delete=models.CASCADE, related_name="users", null=True, blank=True) # Relación 1 a muchos def __str__(self): return f"{self.name} - {self.email}" class Profile(models.Model): # Relación 1 a 1 con User user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="profile") bio = models.TextField(max_length=500, blank=True) phone_number = models.CharField(max_length=20, blank=True) address = models.CharField(max_length=200, blank=True) def __str__(self): return f"Profile of {self.user.name}" class Course(models.Model): title = models.CharField(max_length=200) description = models.TextField(max_length=500) link = models.URLField() certificates = models.ManyToManyField(Certificate, related_name="courses") # Relación muchos a muchos con Certificate users = models.ManyToManyField(User, related_name="courses") # Relación muchos a muchos con User def __str__(self): return f"{self.title} - {self.description} - {self.link}" ```
![](https://static.platzi.com/media/user_upload/image-10753cbc-4c81-4199-bbae-0d86e5def1fe.jpg)
Se supone que viendo los comentarios uno mismo se pueda guiar con este tipo de errores.