在Django中保存时,为url指定图像和名称

时间:2015-07-06 03:17:42

标签: python django image python-imaging-library pillow

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

例如,如果某个字段被调用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)

1 个答案:

答案 0 :(得分:0)

ImageFieldget_filename方法,你需要这样称呼它:

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

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

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

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