仅自定义一列管理模板

Customize only one column admin template

我有这样的简单模型

class Result(models.Model):
    detail = models.TextField(blank=True)
    in_file = models.TextField(blank=True)
    out_file = models.CharField(max_length=2000,blank=True)
    pub_date = models.DateTimeField('date published',default=datetime.datetime.now())

现在我想在管理模板中添加 <audio> 标签

第一次尝试

class ResultAdmin(admin.ModelAdmin):

    list_display = ["in_file","show_out_file","detail","pub_date"]

    def show_out_file(self,obj):
        return "<audio>test</audio>"
        #return "<audio>" +obj.out_file +"</audio>" ## it doesn't work though.

直接显示<audio>test</autio>到页面,标签被解析。

接下来,我想我应该覆盖管理模板。

所以我制作了这个文件 templates/admin/base_site.html 并进行了编辑。

成功了,我可以自定义管理主页了。

但是我如何编辑模型(Result)管理页面或只能更改 out_file 列???

您需要使用 format_html(...)--(Django Doc) 函数来呈现标签

<b>from django.utils.html import format_html</b>


class ResultAdmin(admin.ModelAdmin):
    list_display = ["in_file", "show_out_file", "detail", "pub_date"]

    def show_out_file(self, obj):
        audio_html = """
        <audio controls>
          <source src="horse.ogg" type="audio/ogg">
          <source src="horse.mp3" type="audio/mpeg">
          Your browser does not support the audio element.
        </audio>
        """
        return <b>format_html(audio_html)</b>