2012-08-01 48 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] 
相關問題