使用django中的FileField通过管理员上传

时间:2012-06-04 18:26:41

标签: django django-models django-admin

我有一些非常奇怪的事情。我在win7 Django 1.4上。 我有以下media_root / url设置:

MEDIA_ROOT = 'c:\project\uploads'
MEDIA_URL = '/media/'

我的url.py包括:

    urlpatterns += patterns('', 
    (r'^media/(?P<path>.*)$', 'django.views.static.serve', { 
    'document_root': settings.MEDIA_ROOT})) 

我有一个带有该字段的模型:

    file = models.FileField(upload_to=MEDIA_ROOT, blank = True)

现在,我通过管理站点上传文件,文件上传成功。但是,当通过管理员访问文件时,我看到该文件的链接是:

http://127.0.0.1:8000/media/c:\project\uploads\[filename]

我不知道我做错了什么。

1 个答案:

答案 0 :(得分:2)

我认为你的模型错了:

file = models.FileField(upload_to=MEDIA_ROOT, blank = True)

upload_to 期望添加到MEDIA_ROOT的相对路径,所以现在它希望文件处于MEDIA_ROOT / MEDIA_ROOT,这没有任何意义。

尝试类似:

file = models.FileField(upload_to ='files',blank = True)

<强>文档:

  

FileField.upload_to将附加到的本地文件系统路径   您的MEDIA_ROOT设置以确定url属性的值。