7

我怎样才能得到a的链接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 没有设置,但我仍然无法让它工作:

设置.py

MEDIA_ROOT = '/home/xxx/media/'
MEDIA_URL = 'http://xxx.com/media/'

模型.py

class Archive(models.Model):

    #...
    file = models.FileField(upload_to="files")

在壳里

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

4

2 回答 2

-1

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

Django 管理、静态和媒体文件的混淆

于 2012-07-13T16:00:03.607 回答
-2

我猜你的字段定义为:

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")
于 2012-07-13T16:01:00.903 回答