使用Django管理界面上传文件

13
我希望能够使用Django Admin界面上传.PDF文件,并在我的网站页面上反映出这些文件。这是否可能?如果可以,我该如何做?否则,管理员用户有什么解决办法可以私下上传文件,以后会在网站上显示?
从Django文档中文件上传所了解到的是上传发生在网站本身,但我想使用Admin界面来完成这个过程,以便只有管理员用户才能上传这些文件。找到了这个问题,但它只涉及图片。任何形式的帮助都将不胜感激。

2
FileField 我相信... - Joran Beasley
1个回答

27

没什么特别的要做,django-admin已经有了。

models.py

class Router(models.Model):
    specifications = models.FileField(upload_to='router_specifications')

admin.py

from django.contrib import admin
from my_app import models

admin.site.register(models.Router)

现在您的模型管理中会看到一个文件上传字段。如果模型实例已有文件,您也会看到指向该文件的链接。

将模型传递到视图上下文中并使用字段的url属性来链接文件,以便在向用户呈现视图时使用。

<a href="{{ my_model_instance.specifications.url }}">Download PDF</a>

谢谢!该应用程序的后端数据库是托管在Azure上的MS SQL。我需要将upload_to参数的值更改为表的名称吗?我已经在Management Studio中打开了数据库并相应地添加了表,但仍然出现错误。(这应该是一个完全不同的问题,还是我适当地将其作为评论提出了?) - mrqcox
1
无论使用哪种数据库,文件都不会存储在数据库中,只会存储一个指向文件位置的链接,该位置相对于项目的MEDIA_ROOT设置。因此,在Django中静态和媒体文件方面最好通过一些教程进行学习,虽然有很多要学习的,但是这样做是有好处的! - Ian Price
明白了。谢谢你的帮助! - mrqcox

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接