2012-08-01 32 views

Respuesta

12

Ver: Actions that Provide Intermediate Pages

No puede hacerlo desde la página de lista de cambios, pero en su página intermedia, puede tener una forma que permita al usuario introducir un valor, y luego usar ese valor para la acción.

4

Es posible con Django 1.5, aunque es un poco hackish. No estoy seguro de qué otras versiones anteriores de Django es posible.

Escribe su propia subclase ModelAdmin. ModelAdmin tiene un atributo llamado action_form que determina el formulario que se muestra antes del botón Go en la página de la lista de cambios. Puede escribir su propio formulario y configurarlo como action_form en su subclase ModelAdmin.

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 

Con estos cambios, que tendrá una CharField, donde se puede poner el valor de X.

Y use x_field en su función de acción.

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] 
Cuestiones relacionadas