2

我想为每一行添加一个按钮,如按钮位置上的图片所示,该按钮应弹出相同模式的字段内容或我插入以显示的任何内容。

在此处输入图像描述

4

1 回答 1

4

这实际上很容易做到:) 虽然取决于您希望按钮执行的操作,但它可能会变得更复杂一些。您可以在列表视图中包含任何您想要的内容,只需创建一个返回您想要插入的任何内容的方法,然后将其列在list_display. 例如:

class MyModelAdmin(admin.ModelAdmin):
    list_display = (
        "post_title",
        ...
        "my_button_field",
    )

    def my_button_field(self, obj):
        # obj is the particular instance of the object representing a particular row
        return obj.property

对于按钮,您需要使用format_html. 这会将字符串的相关部分标记为安全,使其显示为 HTML 按钮,并转义其他部分以防止各种安全问题。

它看起来像这样:

from django.utils.html import format_html

class MyModelAdmin(admin.ModelAdmin):
    list_display = (
        "post_title",
        ...
        "my_button_field",
    )

    def my_button_field(self, obj):
        return format_html(
            "<button onclick=`doSomething({})`>{}</button>", 
            obj.id, 
            obj.some_property
        )

object.id和的值object.some_property将被插入到占位符中。

当然,您需要添加 javascript doSomething,有几种方法可以做到这一点,但您可以在此处找到更多信息。如果您想要的可以通过锚点来实现,那么使用<a>标签可能会更容易,这样您就不必为任何额外的 javascrpt 烦恼。

于 2020-05-27T22:41:42.907 回答