如何在管理Django面板的更改页面中更改路径

问题描述

我在django管理控制台中上载的所有文件都存储在FTP服务器中,没有文件存储在本地。

An example of how the change page looks after the file has been uploaded

我想知道如何更改带圆圈的href,以便当我单击它时,该路径对应于ftp路径+上载文件名称

因此,它当前链接到“ http://127.0.0.1:8000/admin/basic_app/software/6/change/profile_pics/file_name”,但应链接到“ ftp://:@:/文件夹/文件名”,以便在单击时打开FTP服务器上的文件

可以通过在某处更改url路径来解决此问题,还是必须对这些页面进行模板覆盖?

解决方法

我认为您可以在admin.py(来源:Django. Override the html format of a FileField field in the change page via ModelAdmin)中覆盖AdminFileWidget

尝试一下:

from django.utils.safestring import mark_safe

class AdminMediaWidget(AdminFileWidget):
    def render(self,name,value,attrs=None,renderer=None):
        output = []
        if value and getattr(value,"url",None):
            image_url = value.url
            output.append('Real ftp link : <a href="ftp://myftp/{0}">{1}</a>'.format(image_url,image_url))

        output.append(super(AdminFileWidget,self).render(name,attrs))
        return mark_safe(''.join(output))


class FileAdmin(admin.ModelAdmin):
    formfield_overrides = {
        FileField: {'widget': AdminMediaWidget},}


admin.site.register(MyModelFile,FileAdmin)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...