summaryrefslogtreecommitdiff
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 12:49:27 +0100
commite651b3095c950627b1eed1527f2bb011ddad03de (patch)
tree07a94530f7e97f1d6c8c2ff6cbc7ffddea359ad1
parent74f2a58b3a5319d2d450c367293f03ad88c10894 (diff)
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.
-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