Problema al usar las acciones de administración de Django con páginas intermedias

Agregué una acción de administrador send_EMAIL a través de admin.py. Quiero que cuando el administrador use la acción send_EMAIL para usuarios seleccionados, se muestre una página intermedia con todos los usuarios seleccionados y solicite confirmación. En mi caso, solicito confirmación pero cuando hago clic en “enviar” Botón “Enviar correo electrónico” no pasa nada y me devolvieron a la vista change_list sin que se haya llamado a la acción send_EMAIL.

Admin.py

class MyUserAdmin(UserAdmin): list_display = ['username', 'email', 'first_name', 'last_name', 'is_active', staff] list_filter = ['groups', 'is_staff', 'is_superuser', 'is_active'] actions = ['send_EMAIL'] def send_EMAIL(self, request, queryset): from django.core.mail import send_mail if 'apply' in request.POST: for i in queryset: if i.email: send_mail('Subject here', 'Here is the message.', 'from@example.com',[i.email], fail_silently=False) else: self.message_user(request, "Mail sent successfully ") else: from django.http import HttpResponse from django.template import RequestContext, loader t = loader.get_template('admin/send_mail.html') c = RequestContext(request, {'articles': queryset}) return HttpResponse(t.render(c),) admin.site.unregister(User) admin.site.register(User, MyUserAdmin) 

templates / send_mail.html

 {% extends "admin/base_site.html" %} {% block content %} {% csrf_token %} 

The mail will be send to following users:

    {{ articles|unordered_list }}
{% endblock %}

Lo siento por mal inglés .Plz ayuda

Encontré una manera fácil de hacerlo. Funcionó para mí … Espero que ayude:

Lo que debe hacer es “pasar” los elementos seleccionados a la página de confirmación e incluirlos en el formulario, así como incluir el para que django El administrador sabe que todavía debe llamar a una admin action . La post es solo para saber si se debe procesar el conjunto de consultas o la página de confirmación.

 # Write your admin action. # IMPORTANT: Note the context passed to TemplateResponse from django.contrib.admin import helpers from django.template.response import TemplateResponse class MyModelAdmin(admin.ModelAdmin): def admin_action(self, request, queryset): if request.POST.get('post'): # process the queryset here else: context = { 'title': _("Are you sure?"), 'queryset': queryset, 'action_checkbox_name': helpers.ACTION_CHECKBOX_NAME, } return TemplateResponse(request, 'path/to/template.html', context, current_app=self.admin_site.name) # The template {% extends "admin/base_site.html" %} {% load i18n l10n %} {% block content %} 
{% csrf_token %}

The following videos will be accepted:

    {{ queryset|unordered_list }}
{% for obj in queryset %} {% endfor %}
{% endblock %}