Хотя я думаю, что действия лучше, если вам действительно нужна кнопка, вот самый простой способ:
Определите функцию, которая возвращает кнопку HTML в вашей модели. То, как представление обрабатывает это действие кнопки, является вашим вызовом и точно так же, как и любое другое представление.
Одной из идей является ссылка на определенный URL-адрес, такой как /restart/3/
(если эта кнопка выполняет безопасную операцию) или размещение элементов формы в каждой кнопке, которые ВЫСТУПАЮТ в отдельное представление с <input type="hidden" name="id" value="%(the_id)s" />
# models.py
def restart_button(self):
return '<a href="restart/%s">Restart Me</a>' % (self.id)
restart_button.allow_tags = True
# admin.py
list_display = ('restart_button', ...)
def get_urls(self):
# use get_urls for easy adding of views to the admin
urls = super(MyModelAdmin, self).get_urls()
my_urls = patterns('',
(r'^restart/(?P<id>\d)$', self.restart)
)
return my_urls + urls
def restart(self, request, id):
MyModel.objects.get(id=id).restart()
request.user.message_set.create(message="%s restarted." % id)
return http.HttpResponseRedirect('../')