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

时间:2020-08-19 10:23:30

标签: django django-models django-admin django-urls

我在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路径来解决此问题,还是必须对这些页面进行模板覆盖?

1 个答案:

答案 0 :(得分:0)

我认为您可以在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, value, attrs))
        return mark_safe(''.join(output))


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


admin.site.register(MyModelFile,FileAdmin)