Procházet zdrojové kódy

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.
Daniel Fairhead před 5 roky
rodič
revize
e651b3095c
1 změnil soubory, kde provedl 5 přidání a 3 odebrání
  1. 5 3
      docs/ref/contrib/admin/actions.txt

+ 5 - 3
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