2012-08-01 33 views

Trả lời

12

Xem: Actions that Provide Intermediate Pages

Bạn không thể làm điều đó ngay từ trang sách thay đổi, nhưng trên trang trung gian của bạn, bạn có thể có một hình thức mà sẽ cho phép người dùng nhập vào một giá trị, và sau đó sử dụng giá trị cho hành động.

4

Có thể với Django 1.5, mặc dù hơi bị hack một chút. Tôi không chắc chắn với những gì các phiên bản cũ Django nó có thể.

Bạn viết lớp con ModelAdmin của riêng bạn. ModelAdmin có thuộc tính được gọi là action_form xác định biểu mẫu được hiển thị trước nút Go trên trang danh sách thay đổi. Bạn có thể viết biểu mẫu của riêng bạn và đặt nó dưới dạng action_form trên lớp con ModelAdmin của bạn.

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 

Với những thay đổi này, bạn sẽ có CharField, nơi bạn có thể đặt giá trị cho X.

Và sử dụng x_field trong chức năng hành động của bạ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] 
Các vấn đề liên quan