Как получить ссылку на файл в поле FileField?
как я могу получить ссылку FileField
? Я попробовал url
поле, но оно дает путь к файлу:
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'
я ожидал получить http://<mydomain>/media/files/reference/1342188147.zip
как я могу получить это? Нужно ли создавать строку вручную?
редактировать
мой MEDIA_URL не был установлен, но я все еще не могу заставить его работать:
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 Шелл!--27-->
a = Archive()
a.file = "/some/path/to/file.txt"
a.save()
тогда я получаю за a.path
:
"/some/path/to/file.txt"
и a.url
:
"http://xxx.com/media/some/path/to/file.txt"
когда это сделано программно, a.file = "/some/path/to/file.txt"
файл не загружен до MEDIA_ROOT
. Как я могу загрузить файл в каталог, определенный upload_to
, то есть в моем случае /home/xxx/media/file.txt
?
2 ответов
вывод основан на вашем файле настроек, посмотрите здесь для понимания обслуживания staticfiles в разработке и / или производстве:
Я предполагаю, что у вас есть поле определено как:
picture = models.ImageField(upload_to="/home/xxx/media/files/reference")
другими словами, возможно ли, что вы определили абсолютный путь для свойства upload_path поля ?
попробуйте что-то вроде
from django.conf import settings
picture = models.ImageField(upload_to=settings.MEDIA_ROOT + "files/reference")