Это на самом деле довольно легко сделать :) Хотя в зависимости от того, что вы хотите, чтобы кнопка делала, это может быть немного сложнее. Вы можете иметь все, что хотите, в своем представлении списка, просто создайте метод, который возвращает все, что вы хотите вставить, и перечислите его в 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.