Para resolver o problema de uma vez por todas, sempre que tiver um ImageField ou um FileField em seu model, utilize da seguinte maneira:
def retira_acento_upload(objeto, arquivo): """ Essa função irá normalizar como um slug, o nome do arquivo que está sendo gravado e, irá gravá-lo em /media/uploads/APPNAME_CLASSNAME/ANO/nome_do_arquivo_normalizado.extensao """ import os, datetime from django.template.defaultfilters import slugify caminho = str( '%s/%s/%s' % ( objeto._meta.app_label, objeto.__class__.__name__, datetime.datetime.now().year ) ).lower() nome, ext = os.path.splitext( arquivo ) url = slugify( nome[:15] ) return os.path.join( 'uploads', caminho, url+ext ) class SuaClasse(models.Model): ... arquivo = models.FileField(upload_to=retira_acento_upload) ...Customize o return da def acima da maneira que desejar. No exemplo acima, o arquivo será enviado para uploads/<nome_da_app>/<nome_da_classe>/<ano_atual>/<nome_do_arquivo_nomalizado>.<extensão>
hasta!
Nenhum comentário:
Postar um comentário