【问题标题】:how to customize django admin panel model columns? django如何自定义 django 管理面板模型列? django
【发布时间】:2017-06-22 08:29:28
【问题描述】:

我所说的自定义并不是指使用list_display 之类的东西。

我自定义的意思是我想要一个模型中没有的列。

这个想法是,我想创建一个说下载的列,并且模型中没有名为下载的这样的属性。这只是一个我想自定义的网址,它会显示在每一行中。

一个简单的例子就是在其中一个随机模型的管理页面中。 假设这是我的 Employee 模型。 在我的管理页面中,它会显示员工的姓名,在右侧,我想自己创建一个下载 url,它将导出用户信息。我已经准备好导出代码和网址,但我不确定如何在管理页面中自定义它。

Model Employee
-------------------------------
name            | download
-------------------------------
Goerge          | download
Fluffy          | download
Techy           | download

有人知道如何做到这一点吗?

提前致谢

【问题讨论】:

    标签: python django model admin customization


    【解决方案1】:
    from django.utils.html import format_html
    
    class EmployeeAdmin(ModelAdmin):
        list_display = ('download', )
    
        def download(self, obj):
            return format_html('<a href="/your/path/download/{}/">Download</a>', obj.pk)
        download.short_description = 'Download Link'
    

    【讨论】:

      【解决方案2】:

      您可以在“ModelAdmin”子类中创建一个函数,为每个条目在结果表中呈现自定义内容,例如 answer

      例如,假设您表格中的“下载”文本链接到 Google 搜索(“https://www.google.com.au/search?q=test”)。你可以这样做:

      from django.contrib import admin
      
      class EmployeeAdmin(admin.ModelAdmin):
          fields = ('name')
          list_display = ('name', 'download')
      
          def download(self, obj):
              return '<a href=https://www.google.com.au/search?q="' + obj.name + '">' + obj.name + '</a>'
      
          download.allow_tags = True
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-07
        • 2013-12-04
        • 2014-02-16
        • 1970-01-01
        • 2016-03-01
        相关资源
        最近更新 更多