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

How to change the path in the change page of the admin django panel

我在 django 管理面板中上传的所有文件都存储在 FTP 服务器中,没有文件存储在本地。

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

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

因此它目前 link 指向“http://127.0.0.1:8000/admin/basic_app/software/6/change/profile_pics/file_name”,但它应该 link 类似于“ftp” ://:@:/folder/file_name",这样当它被点击时它会打开 FTP 服务器上的文件。

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

我认为您可以覆盖 admin.py 中的 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)