Django-admin:在渲染之前以更改形式更改字段值

时间:2012-02-02 17:28:03

标签: python django django-forms django-admin django-models

自定义视图中有一个链接指向特定模型实例的Django-admin更改形式。目标是在表单呈现之前更改某些表单域的值,就像可以通过添加参数(ModelFieldName = value)来添加表单URL来预填充添加表单中的字段。如何在渲染之前更改更改表单字段中的值?也许,我必须创建我的ModelForm,更改其中的字段值并分配给ModelAdmin的表单变量?如果是这样,如何更改ModelForm字段的值?

1 个答案:

答案 0 :(得分:1)

我只是认为ModelAdmin.add_view使用request.GET在django / contrib / admin / options.py第900行设置初始值。

所以要预先填充someapp.somemodel添加表单的“名称”字段“bar”,只需打开:/ admin / someapp / somemodel / add /?name = bar

现在,如果您想在更改表单中使用类似的行为,请覆盖get_object方法:

def get_object(self, request, object_id):
    obj = super(YourModelAdmin, self).get_object(request, object_id)
    for key, value in request.GET.items():
        setattr(obj, key, value)
    return obj

现在打开/ admin / someapp / somemodel / 1 /?name = bar,字段“name”在表单中的值为“bar”。

经过测试 hack