我需要根据模型属性值保存的图像名称。
例如,如果某个字段被调用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)
答案 0 :(得分:0)
ImageField
有get_filename
方法,你需要这样称呼它:
post.imagen.get_filename(filename) # To retrieve it pre-save
filename
与您在字段实例化中提供的名称相同
保存对象后,您也可以执行以下操作:
post.imagen.name # To retrieve it post-save