Admin FileField current url incorrect
在django管理中,无论我在哪里有一个文件字段,编辑页面上都有一个"当前"框,其中有一个指向当前文件的超链接。但是,此链接会附加到当前页面URL,因此会导致404,因为没有这样的页面,例如:
是否有任何方法可以在默认管理布局中修复此问题?它会影响我数据库中的每个文件字段,在我看来就像一个bug。我用错了吗?
设置.py
添加行:
1 2 | import os BASE_DIR = os.path.realpath(os.path.dirname(__file__)) |
更换管路:
1 2 | MEDIA_ROOT = '' MEDIA_URL = '' |
号
具有
1 2 | MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR,os.pardir,'media') |
这将设置项目以呈现文件夹/项目目录/媒体中的媒体内容/
网址.py同时添加行:
1 | import settings |
。
在URL模式中添加以下行:
1 | url(r'^media/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.MEDIA_ROOT, 'show_indexes': False}), |
型号.py
在模型内部添加以下行:
1 | File = models.FileField('File',upload_to='./') |
。
在模型中定义方法
1 2 3 4 5 6 7 | def fileLink(self): if self.File: return '' + 'NameOfFileGoesHere' + '' else: return '' fileLink.allow_tags = True fileLink.short_description ="File Link" |
。行政副总裁
使用字段
如
1 2 3 | class FileAdmin(admin.ModelAdmin): list_display = ['fileLink'] readonly_fields = ['fileLink'] |
这个问题的答案已经被这个答案完全覆盖了。不过,简而言之,问题是您可能没有在settings.py和urls.py中设置媒体根目录和媒体,所以您没有设置媒体文件夹。
有关如何做这些事情的详细信息,请查看Akseli Palen令人难以置信的精彩回答。