您需要做的是将选定的项目“传递”到确认页面,并将它们包括在表单中,并包括,<input type="hidden" name="action" value="admin_action" />
以便django管理员知道它仍应调用admin action
。该post
是只知道是否处理查询集或渲染确认页面。
# 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_check@R_104_2419@_name': helpers.ACTION_CHECK@R_104_2419@_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 %}
<form action="" method="post">{% csrf_token %}
<p>The following videos will be accepted:</p>
<ul>{{ queryset|unordered_list }}</ul>
<div>
{% for obj in queryset %}
<input type="hidden" name="{{ action_check@R_104_2419@_name }}" value="{{ obj.pk|unlocalize }}" />
{% endfor %}
<input type="hidden" name="action" value="admin_action" />
<input type="hidden" name="post" value="yes" />
<input type="submit" value="{% trans "Yes, I'm sure" %}" />
</div>
</form>
{% endblock %}