Örneğin, seçilen öğelerdeki belirli bir alanı X olarak ayarlamak için bir eylem eklemek istediğimde (durum değil, sadece örnek vermek gerekirse), X'in zor olarak değil de girilmesine izin vermek için bir eylem eklemek mümkün mü? kodlanmış?Django özel yönetim işlemlerine parametreler ekleyebilir misiniz?
15
A
cevap
12
Bkz: Actions that Provide Intermediate Pages
Haklısınız değişiklik listesi sayfasından bunu yapamaz, ancak orta sayfasında, kullanıcı bir değer girmek için izin verecek bir biçime sahip olabilir ve daha sonra söz konusu değeri kullanıneylem.
4
Django 1.5 ile olsa da, onun küçük bir hackish. Diğer eski Django sürümlerinin mümkün olduğundan emin değilim.
Kendi ModelAdmin alt sınıfınızı yazarsınız. ModelAdmin'in action_form
isimli bir özelliği vardır ve bu, değişmez sayfadaki Go
düğmesinin altında görünen formu belirler. Kendi formunuzu yazabilir ve ModelAdmin alt sınıfınızda action_form olarak ayarlayabilirsiniz. Bu değişikliklerle
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
, size
X
değerini koyabilirsiniz bir Charfield sahip olacaktır.
Ve işlem işlevinizde x_field
kullanı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]