2012-08-01 9 views

Antwort

12

See: Actions that Provide Intermediate Pages

Sie es nicht richtig von der Änderungsliste Seite tun können, aber auf dem Zwischenseite, könnten Sie ein Formular, das es dem Benutzer erlauben würde einen Wert, eingeben und dann diesen Wert verwenden für die Aktion.

4

Es ist möglich mit Django 1.5, obwohl es ein wenig hackish ist. Ich bin mir nicht sicher, mit welchen anderen älteren Django-Versionen es möglich ist.

Sie schreiben Ihre eigene ModelAdmin-Unterklasse. ModelAdmin hat ein Attribut mit dem Namen action_form, das die Form vor Go Schaltfläche auf der Änderungsliste bestimmt. Sie können Ihr eigenes Formular schreiben und es als action_form für Ihre ModelAdmin-Unterklasse festlegen.

from django.contrib.admin.helpers import ActionForm 
# ActionForm is the default form used by Django 
# You can extend this class 

class XForm(ActionForm): 
    x_field = forms.CharField() 


class YourModelAdmin(admin.ModelAdmin): 
    action_form = XForm 

Mit diesen Änderungen finden Sie eine CharField haben, wo man Wert für X setzen können.

Und verwenden Sie x_field in Ihrer Aktionsfunktion.

def set_x_on_objects(modeladmin, request, queryset): 
    for obj in queryset: 
     obj.something = request.POST['x_field'] 
    # do whatever else you want 

class YourModelAdmin(admin.ModelAdmin): 
    action_form = XForm 
    actions = [set_x_on_objects]