我找到了一种简单的方法。它对我有用…我希望对您有所帮助:
您需要做的是将选定的项目“传递”到确认页面,并将它们包括在表单中,并包括,
<input type="hidden" name="action"value="admin_action" />以便django管理员知道它仍应调用
adminaction。该
post是只知道是否处理查询集或渲染确认页面。
# Write your admin action.# importANT: Note the context passed to TemplateResponsefrom django.contrib.admin import helpersfrom django.template.response import TemplateResponseclass 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 %}<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_checkbox_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 %}


