Can you add parameters to Django custom admin actions? Can you add parameters to Django custom admin actions? django django

Can you add parameters to Django custom admin actions?


See: Actions that Provide Intermediate Pages

You can't do it right from the changelist page, but on your intermediate page, you could have a form that would allow the user to enter a value, and then use that value for the action.


It is possible with Django 1.5, though its a little hackish. I am not sure with what other older Django versions it's possible.

You write your own ModelAdmin subclass. ModelAdmin has an attribute called action_form which determines the form shown before Go button on changelist page. You can write your own form, and set it as action_form on your ModelAdmin subclass.

from django import formsfrom django.contrib.admin.helpers import ActionForm# ActionForm is the default form used by Django# You can extend this classclass XForm(ActionForm):    x_field = forms.CharField()    class YourModelAdmin(admin.ModelAdmin):    action_form = XForm

With these changes, you will have a CharField, where you can put value for X.

And use x_field in your action function.

def set_x_on_objects(modeladmin, request, queryset):    for obj in queryset:        obj.something = request.POST['x_field']    # do whatever else you wantclass YourModelAdmin(admin.ModelAdmin):    action_form = XForm    actions = [set_x_on_objects]