如何获取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")
在shell中
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
?
答案 0 :(得分:0)
输出基于您的设置文件,请查看此处以了解在开发和/或生产中提供静态文件:
答案 1 :(得分:-1)
我猜你将字段定义为:
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")