La función de cargar varias imágenes se puede configurar en el sistema de gestión de fondo del administrador de Django.

Tabla de contenido

 1. El método convencional predeterminado solo puede cargar un ejemplo de una imagen

2. La configuración puede cargar varias imágenes


Problema: en el sistema de gestión de fondo de administración que viene con django, solo se puede cargar una imagen de manera convencional y no se pueden cargar ni agregar varias imágenes, como se muestra en la figura a continuación. ¡Entonces ahora necesita configurar la función de cargar varias imágenes!

 1. El método convencional predeterminado solo puede cargar un ejemplo de una imagen

modelos modelos.py

class Product(models.Model):
    """常规商品"""
    name = models.CharField(verbose_name="商品名称", max_length=50)
    desc = models.TextField(verbose_name="描述")
    show_img = models.ImageField(verbose_name="展示图", upload_to='images/')
    detail_img = models.ImageField(verbose_name="详情图", upload_to='images/')

    is_sale = models.BooleanField(verbose_name="是否上架", default=False)  # 为False时是下架
    is_show = models.BooleanField(verbose_name="是否展示在首页", default=True)  # 为True时是展示在首页
    create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
    update_time = models.DateTimeField(auto_now=True, verbose_name="最后一次修改时间")


    def __str__(self):
        return self.name

    class Meta:
        verbose_name = "常规商品"
        verbose_name_plural = verbose_name

Cuando el modelo de producto anterior se configura en el fondo de administración, solo se puede cargar una imagen de visualización show_img y una imagen de detalle detail_img. El requisito actual es que tanto la imagen de visualización show_img como la imagen de detalle detail_img pueden cargar varias imágenes.

2. La configuración puede cargar varias imágenes

1. Configurar modelo models.py

class Product(models.Model):
    """常规商品"""
    name = models.CharField(verbose_name="商品名称", max_length=50)
    desc = models.TextField(verbose_name="描述")
    # show_img = models.ImageField(verbose_name="展示图", upload_to='images/')
    # detail_img = models.ImageField(verbose_name="详情图", upload_to='images/')

    is_sale = models.BooleanField(verbose_name="是否上架", default=False)  # 为False时是下架
    is_show = models.BooleanField(verbose_name="是否展示在首页", default=True)  # 为True时是展示在首页
    create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
    update_time = models.DateTimeField(auto_now=True, verbose_name="最后一次修改时间")


    def __str__(self):
        return self.name

    class Meta:
        verbose_name = "常规商品"
        verbose_name_plural = verbose_name


class ProductShowImage(models.Model):
    product = models.ForeignKey(Product, on_delete=models.CASCADE, verbose_name="常规商品", related_name='imgs')
    show_img = models.ImageField(upload_to='show_images/', verbose_name="展示图")
    detail_img = models.ImageField(upload_to='detail_images/', verbose_name="详情图")

    def __str__(self):
        return ""

    class Meta:
        verbose_name = "常规商品图"
        verbose_name_plural = verbose_name

Comente la imagen mostrada show_img y la imagen detallada detail_img en el producto modelo original, agregue una clase ProductShowImage, el producto modelo y ProductShowImage tienen una relación de uno a muchos, y coloque la imagen mostrada show_img y la imagen detallada detail_img en la tabla donde se encuentra la clave foránea.

2. Configure el archivo admin.py

class ProductShowImageInline(admin.TabularInline):
    model = ProductShowImage
    can_delete = True
    extra = 3  # 额外展示一个添加图片选项(默认就是3)
    max_num = 6  # 最多添加6张图片


class ProductAdmin(admin.ModelAdmin):
    """常规商品"""
    inlines = [ProductShowImageInline]


admin.site.register(Product, ProductAdmin)  # 注册到admin后台

Después de la configuración anterior, puede mostrar varias imágenes que se pueden cargar en el fondo de administración, como se muestra a continuación

Supongo que te gusta

Origin blog.csdn.net/qq_37140721/article/details/130800591
Recomendado
Clasificación