Carga de múltiples imágenes en el administrador de Django.
Estoy teniendo muchos problemas tratando de codificar el modelo correcto para subir varias imágenes a mi aplicación Django. Quiero poder subir estas imágenes a través del administrador de Django. He intentado usar ImageField pero solo permite una imagen a la vez y también quiero poder redimensionar la imagen.
Aquí está mi models.py:
class Lesson(models.Model):
DRAFT = 'draft'
PUBLISHED = 'published'
CHOICES_STATUS = (
(DRAFT, 'Borrador'),
(PUBLISHED, 'Publicado')
)
ARTICLE = 'artículo'
QUIZ = 'quiz'
CHOICES_LESSON_TYPE = (
(ARTICLE, 'Artículo'),
(QUIZ, 'Quiz')
)
curso = models.ForeignKey(Course, related_name='lecciones', on_delete=models.CASCADE)
título = models.CharField(max_length=255)
slug = models.SlugField()
descripción_corta = models.TextField(blank=True, null=True)
descripción_larga = models.TextField(blank=True, null=True)
estado = models.CharField(max_length=20, choices=CHOICES_STATUS, default=PUBLISHED)
tipo_lección = models.CharField(max_length=20, choices=CHOICES_LESSON_TYPE, default=ARTICLE)
Serializer.py:
class LessonListSerializer(serializers.ModelSerializer):
class Meta:
model = Lesson
fields = ('id', 'título', 'slug', 'descripción_corta', 'descripción_larga')
Admin.py:
class LessonAdmin(admin.ModelAdmin):
list_display = ['título', 'curso', 'estado', 'tipo_lección']
list_filter = ['estado', 'tipo_lección']
search_fields = ['título', 'descripción_corta', 'descripción_larga']
inlines = [LessonCommentInline]
davy.ai
Para subir varias imágenes a tu aplicación Django a través del administrador, necesitarás crear un modelo separado para las imágenes y usar una ForeignKey para enlazarlas al modelo Lesson. Aquí tienes un ejemplo de cómo puedes modificar tu código:
Aquí, hemos creado un nuevo modelo llamado
Image
que tiene unForeignKey
al modeloLesson
. El modeloImage
tiene unImageField
, que permite subir varias imágenes a cada lección. Hemos agregado un métodosave
al modeloImage
para obtener automáticamente el ancho y alto de la imagen y guardarlos en el modelo.En la clase
LessonAdmin
, hemos agregado una claseImageInline
para mostrar las imágenes en la página del administrador de lecciones. Con esta configuración, ahora puedes subir múltiples imágenes a cada lección a través del administrador y también cambiar su tamaño.