Python 您可以向Django自定义管理操作添加参数吗?
例如,如果我想添加一个操作,将所选项目中的特定字段设置为X(不是这种情况,只是为了举例说明)。是否可以添加一个操作,以允许输入X而不是硬编码 见:Python 您可以向Django自定义管理操作添加参数吗?,python,django,admin,models,Python,Django,Admin,Models,例如,如果我想添加一个操作,将所选项目中的特定字段设置为X(不是这种情况,只是为了举例说明)。是否可以添加一个操作,以允许输入X而不是硬编码 见: 您不能从changelist页面直接执行操作,但在中间页面上,您可以有一个表单,允许用户输入一个值,然后将该值用于操作。Django 1.5也可以,尽管有点粗糙。我不确定还有哪些较旧的Django版本可以 您可以编写自己的ModelAdmin子类。ModelAdmin有一个名为action\u form的属性,它决定了在变更列表页面上的Go按钮之前显
您不能从changelist页面直接执行操作,但在中间页面上,您可以有一个表单,允许用户输入一个值,然后将该值用于操作。Django 1.5也可以,尽管有点粗糙。我不确定还有哪些较旧的Django版本可以 您可以编写自己的ModelAdmin子类。ModelAdmin有一个名为
action\u form
的属性,它决定了在变更列表页面上的Go
按钮之前显示的表单。您可以编写自己的表单,并在ModelAdmin子类中将其设置为action\u表单
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_字段
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]
要从django使用此功能,应使用导入表单