Что касается кнопки отправки для каждой строки, вы можете дать своей модели (или ModelAdmin) новую функцию, которая возвращает соответствующий HTML-код, указывающий на ваши представления (или вызывая соответствующие функции AJAX). Просто добавьте свою функцию в list_display ModelAdmin и убедитесь, что HTML-теги не экранированы:
class MyModelAdmin(admin.ModelAdmin):
...
list_display = ('name', 'email', 'sender', 'send_email_html')
def send_email_html(self, obj):
# example using a javascript function send_email()
return '<a href="send_email(%s)">Send Now</a>' % obj.id
send_email_html.short_description = 'Send Email'
send_email_html.allow_tags = True
Что касается использования действия, определите «действия» в ModelAdmin как список, содержащий вашу функцию, которая принимает modeladmin, request, queryset в качестве параметров:
def send_email_action(modeladmin, request, queryset):
whatever_you_want_to_do_with_request_and_queryset
send_email.short_description = 'Send email'
class MyModelAdmin(admin.ModelAdmin):
...
actions = [
send_email_action
]