2016-12-14 50 views
-1

我需要定义上传的图片的文件名的自定义,我有这个型号:自定义文件名

class Personas(model.Models): 
    ... some fields here ... 
    documento = models.CharField(max_length=10) 

class Identificacion(model.Models): 
    ...some fields here... 
    persona = models.ForeignKey('Personas') 
    fotos = models.ManyToManyField('FotoPersona',related_name='foto_persona',blank=True,null=True) 


class FotoPersona(model.Models): 
    persona = models.ForeignKey('Personas') 
    foto = models.ImageField(upload_to= CUSTOM_PATH) 

CUSTOM_PATH必须在接下来的格式:

APP_NAME/persona.documento/FILE_NAME

其中file_name可以是:

PERFIL

阵线

cuerpo_entero

我怎么能作出这样的?

回答

1

您可以定义功能,将建设所需的文件名,并在的ImageField的upload_to参数中使用它:

def upload_name(instance, filename): 
    return '{}/{}/{}'.format(app_name, instance.persona.documento, filename) 

class FotoPersona(model.Models): 
    persona = models.ForeignKey('Personas') 
    foto = models.ImageField(upload_to=upload_name) 
+0

并且参数文件名可以通过我的especific文件名?或者这个参数采用原始文件名? – jaime

+0

@jaime它是原始文件名,但你可以在函数内覆盖它。 – neverwalkaloner