es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Puedo crear modelos de Django automáticamente?

Estoy trabajando en un sitio web de currículum con Django, en el que para la sección de habilidades definí un modelo como el siguiente:

from django.db import models

class Skills(models.Model):
    name = models.CharField(max_length=50)
    level = models.DecimalField(max_digits=3, decimal_places=3)
    def __str__(self):
        return self.name

Sin embargo, si por ejemplo, agrego una habilidad “Python” a través del administrador en este modelo, quiero agregar varias diapositivas para la habilidad, cada una con una imagen y un párrafo, para dar información detallada sobre mi habilidad.

En otras palabras, quiero crear una tabla para cada habilidad que agregue, con columnas llamadas imagen y descripción.

¿Hay alguna manera de lograrlo?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, puedes lograr esto creando otro modelo para las diapositivas, el cual tiene una clave foránea al modelo de habilidades. Aquí hay un ejemplo de cómo puedes modificar tu código para agregar las diapositivas:

    from django.db import models
    
    
    class Skills(models.Model):
        name = models.CharField(max_length=50)
        level = models.DecimalField(max_digits=3, decimal_places=3)
    
        def __str__(self):
            return self.name
    
    
    class SkillSlide(models.Model):
        skill = models.ForeignKey(Skills, on_delete=models.CASCADE, related_name='slides')
        image = models.ImageField()
        description = models.TextField()
    
        def __str__(self):
            return f"{self.skill}: {self.description}"
    

    El modelo SkillSlide tiene una clave foránea al modelo Skills, lo que significa que cada diapositiva pertenece a una habilidad. El argumento related_name en la clave foránea te permite acceder a las diapositivas de una habilidad utilizando el atributo slides.

    Puedes crear, actualizar y eliminar las diapositivas de una habilidad en la interfaz de administración registrando el modelo SkillSlide junto con el modelo Skills. Por ejemplo:

    from django.contrib import admin
    
    
    class SkillSlideInline(admin.TabularInline):
        model = SkillSlide
    
    
    @admin.register(Skills)
    class SkillsAdmin(admin.ModelAdmin):
        inlines = [SkillSlideInline]
    

    Esto agregará un formulario en línea para el modelo SkillSlide a la página de administración de Skills, por lo que puedes agregar y editar las diapositivas de una habilidad directamente desde el formulario de habilidad.

Comments are closed.