如何在FileField中获取文件的链接?

时间:2012-07-13 15:40:27

标签: django 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")

在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

2 个答案:

答案 0 :(得分:0)

输出基于您的设置文件,请查看此处以了解在开发和/或生产中提供静态文件:

Confusion in Django admin, static and media files

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