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