たとえば(そうではありませんが、説明のために)選択したアイテムの特定のフィールドをXに設定するアクションを追加したい場合。ハードコードではなく、Xを入力できるようにするアクションを追加することはできますか?
8326 次
2 に答える
19
チェンジリストページから直接実行することはできませんが、中間ページに、ユーザーが値を入力し、その値をアクションに使用できるフォームを作成できます。
于 2012-08-01T17:53:39.933 に答える
10
少しハックですが、Django1.5で可能です。他の古いバージョンのDjangoでそれが可能かどうかはわかりません。
独自のModelAdminサブクラスを作成します。ModelAdminには、チェンジリストページのボタンaction_form
の前に表示されるフォームを決定するという属性があります。Go
独自のフォームを作成し、ModelAdminサブクラスでaction_formとして設定できます。
from django import forms
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]
于 2014-08-01T12:13:35.643 に答える