2012-07-13 14 views
6

Jak mogę uzyskać link do FileField? Próbowałem pole url, ale daje ścieżkę pliku:Jak uzyskać łącze do pliku w 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' 

Spodziewałem się dostać http://<mydomain>/media/files/reference/1342188147.zip

Jak mogę odebrać? Czy muszę ręcznie budować ciąg?

EDIT

Moja MEDIA_URL nie została ustalona, ​​ale nadal nie mogę zmusić go do pracy:

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

skorupek

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

Potem dostać za a.path:

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

i a.url:

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

Kiedy zrobić programowo, a.file = "/some/path/to/file.txt", plik nie jest dodany do MEDIA_ROOT. Jak mogę załadować plik do katalogu określonego przez upload_to, tj. W moim przypadku /home/xxx/media/file.txt?

Odpowiedz

0

Wyjście jest na podstawie pliku ustawień, zajrzyj tu do zrozumienia na obsłudze staticfiles w rozwoju i/lub produkcji:

Confusion in Django admin, static and media files

+0

oops, MEDIA_URL nie był ustawiony. – jul

+0

Ale nadal nie mogę dostać tego, czego chcę. cf moja edycja. – jul

0

Zgaduję masz pole zdefiniowane jako:

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

innymi słowy, czy możliwe jest zdefiniowanie bezwzględnej ścieżki dla właściwości pola upload_path?

spróbować czegoś jak

from django.conf import settings 
picture = models.ImageField(upload_to=settings.MEDIA_ROOT + "files/reference") 
Powiązane problemy