2012-08-01 47 views

回答

12

参见:Actions that Provide Intermediate Pages

你不能做到这一点从改变列表页右侧,但您的中间页面上,你可以有一个表单,允许用户输入一个值,然后使用该值那个行动。

4

它可能与Django 1.5,虽然它有点hackish。我不确定其他更老的Django版本是否可能。

您可以编写自己的ModelAdmin子类。 ModelAdmin具有一个名为action_form的属性,该属性确定在更改列表页面上的Go按钮之前显示的表单。您可以编写自己的表单,并将其设置为您的ModelAdmin子类上的action_form。

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 

有了这些变化,你将有一个CharField,在那里你可以把价值X

并在您的动作功能中使用x_field

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] 
相关问题