在Djang中保存时提供url指定的图像和名称

2024-06-25 23:36:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要根据模型的属性值保存的图像的名称。你知道吗

例如,如果一个字段被称为NameEvent,我有一个值Django-Event,那么图像的文件名被保存为Django-event.jpg。你知道吗

from django.db import models
from uuid import uuid4
from datetime import date
import os

class Post(models.Model):

    def _generar_ruta_imagen(instance, filename):
        # El primer paso es extraer la extension de la imagen del
        # archivo original
        extension = os.path.splitext(filename)[1][1:]

        # Generamos la ruta relativa a MEDIA_ROOT donde almacenar
        # el archivo, usando la fecha actual (año/mes)
        ruta = os.path.join('Imagenes', date.today().strftime("%Y/%m"))

        # Generamos el nombre del archivo con un identificador
        # aleatorio, y la extension del archivo original.
        nombre_archivo = '{}.{}'.format(uuid4().hex, extension)

        # Devolvermos la ruta completa
        return os.path.join(ruta, nombre_archivo)

    imagen = models.ImageField(upload_to=_generar_ruta_imagen)

    text = models.TextField(max_lenght=1000)

Tags: pathdjangofrom图像importosmodelsextension
1条回答
网友
1楼 · 发布于 2024-06-25 23:36:05

ImageField有一个方法get_filename,您需要这样调用它:

post.imagen.get_filename(filename) # To retrieve it pre-save

其中filename与您在字段实例化中提供的名称相同

保存对象后,也可以执行以下操作:

post.imagen.name # To retrieve it post-save

相关问题 更多 >