summaryrefslogtreecommitdiff
path: root/docs/ref
diff options
context:
space:
mode:
authorDaniel Fairhead <daniel@dev.ngo>2019-11-04 11:38:31 +0000
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2019-11-06 13:41:15 +0100
commit19221192524a53dc22ff6fa283e0c34dee052e77 (patch)
tree740bdf31db06f6324b47a41e1f456655ecee3ea1 /docs/ref
parent5da7cbe3f6343763571fac1ad373e53051c466d8 (diff)
[3.0.x] Fixed #15742 -- Fixed an example of collecting selected objects in ModelAdmin.actions docs.
The queryset argument is already filtered, and request.POST doesn't contain all selected objects when "Select All" is used. Backport of e651b3095c950627b1eed1527f2bb011ddad03de from master
Diffstat (limited to 'docs/ref')
-rw-r--r--docs/ref/contrib/admin/actions.txt8
1 files changed, 5 insertions, 3 deletions
diff --git a/docs/ref/contrib/admin/actions.txt b/docs/ref/contrib/admin/actions.txt
index 2cb6e8957c..9364c396b3 100644
--- a/docs/ref/contrib/admin/actions.txt
+++ b/docs/ref/contrib/admin/actions.txt
@@ -236,14 +236,16 @@ you'd want to let the user choose a format, and possibly a list of fields to
include in the export. The best thing to do would be to write a small action
that redirects to your custom export view::
- from django.contrib import admin
from django.contrib.contenttypes.models import ContentType
from django.http import HttpResponseRedirect
def export_selected_objects(modeladmin, request, queryset):
- selected = request.POST.getlist(admin.ACTION_CHECKBOX_NAME)
+ selected = queryset.values_list('pk', flat=True)
ct = ContentType.objects.get_for_model(queryset.model)
- return HttpResponseRedirect("/export/?ct=%s&ids=%s" % (ct.pk, ",".join(selected)))
+ return HttpResponseRedirect('/export/?ct=%s&ids=%s' % (
+ ct.pk,
+ ','.join(str(pk) for pk in selected),
+ ))
As you can see, the action is rather short; all the complex logic would belong
in your export view. This would need to deal with objects of any type, hence