我想为每一行添加一个按钮,如按钮位置上的图片所示,该按钮应弹出相同模式的字段内容或我插入以显示的任何内容。
问问题
1323 次
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 回答