【发布时间】:2020-09-14 17:53:15
【问题描述】:
【问题讨论】:
标签: django-models django-templates django-admin django-admin-tools django-admin-actions
【问题讨论】:
标签: django-models django-templates django-admin django-admin-tools django-admin-actions
这实际上很容易做到:) 虽然取决于你想让按钮做什么,它可能会变得更复杂一些。您可以在列表视图中包含任何您想要的内容,只需创建一个返回您想要插入的任何内容的方法,然后在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 的值将被插入到占位符中。
当然,您需要为doSomething 添加javascript,有几种方法可以做到这一点,但您可以找到更多here。如果你想要的可以通过锚来实现,使用<a> 标签可能更容易,这样你就不必费心任何额外的 javascrpt。
【讨论】: