2012-07-13 19 views
6

¿cómo puedo obtener el enlace de un FileField? Probé el campo url, pero da la ruta del archivo:¿Cómo obtener el enlace del archivo en un FileField?

In [7]: myobject.myfilefield.path 
Out[7]: u'/home/xxxx/media/files/reference/1342188147.zip' 

In [8]: myobject.myfilefield.url 
Out[8]: u'/home/xxxx/media/files/reference/1342188147.zip' 

me esperaba conseguir http://<mydomain>/media/files/reference/1342188147.zip

¿Cómo puedo conseguir eso? ¿Debo construir la cadena manualmente?

EDITAR

no se estableció Mi MEDIA_URL, pero todavía no puede conseguir que funcione:

settings.py

MEDIA_ROOT = '/home/xxx/media/' 
MEDIA_URL = 'http://xxx.com/media/' 

models.py

class Archive(models.Model): 

    #... 
    file = models.FileField(upload_to="files") 

con cáscara

a = Archive() 
a.file = "/some/path/to/file.txt" 
a.save() 

Entonces me pasa por a.path:

"/some/path/to/file.txt" 

y para a.url:

"http://xxx.com/media/some/path/to/file.txt" 

Cuando se hace mediante programación, a.file = "/some/path/to/file.txt", el archivo no está subido a MEDIA_ROOT. ¿Cómo puedo cargar un archivo en el directorio definido por upload_to, es decir, en mi caso /home/xxx/media/file.txt?

Respuesta

0

La salida está basado en el archivo de configuración, echar un vistazo aquí para servir a un entendimiento sobre staticfiles en el desarrollo y/o producción:

Confusion in Django admin, static and media files

+0

Uy, MEDIA_URL no se ha establecido. – jul

+0

Pero todavía no puedo obtener lo que quiero. cf mi edición. – jul

0

supongo que tiene el campo definido como:

picture = models.ImageField(upload_to="/home/xxx/media/files/reference") 

en otras palabras, ¿es posible que haya definido una ruta absoluta para la propiedad upload_path del campo?

intentar algo así como

from django.conf import settings 
picture = models.ImageField(upload_to=settings.MEDIA_ROOT + "files/reference") 
Cuestiones relacionadas