2012-07-13 12 views
6

come posso ottenere il collegamento di un FileField? Ho provato il campo url, ma dà il percorso del file:Come ottenere il collegamento del file in 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' 

mi aspettavo di ottenere http://<mydomain>/media/files/reference/1342188147.zip

Come posso ottenere che? Devo costruire la stringa manualmente?

EDIT

mio MEDIA_URL non è stato impostato, ma non riesco ancora a farlo funzionare:

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") 

in guscio

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

Poi ho per a.path:

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

e per a.url:

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

Al termine di programmazione, a.file = "/some/path/to/file.txt", il file non è caricato a MEDIA_ROOT. Come posso caricare un file nella directory definita da upload_to, ad esempio nel mio caso /home/xxx/media/file.txt?

risposta

0

L'uscita è in base al file di impostazioni, date un'occhiata qui per una comprensione a servire staticfiles di sviluppo e/o la produzione di:

Confusion in Django admin, static and media files

+0

oops, MEDIA_URL non è stato impostato. – jul

+0

Ma non riesco ancora a ottenere quello che voglio. cf mia modifica. – jul

0

Sto indovinando avete il campo definito come:

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

in altre parole, è possibile che sia stato definito un percorso assoluto per la proprietà upload_path del campo?

provare qualcosa di simile

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