Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 您可以向Django自定义管理操作添加参数吗?_Python_Django_Admin_Models - Fatal编程技术网

Python 您可以向Django自定义管理操作添加参数吗?

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

例如,如果我想添加一个操作,将所选项目中的特定字段设置为X(不是这种情况,只是为了举例说明)。是否可以添加一个操作,以允许输入X而不是硬编码

见:


您不能从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使用此功能,应使用导入表单