在Django的管理员中,我已经看到如何使用GET变量设置“添加对象”表单的字段(例如/admin/app/model/add?title=lol
将“标题”字段设置为“lol”。
但是,我希望能够按照/admin/app/model/add?key=18
的方式执行某些操作,并从另一个模型的实例加载我的字段的默认数据。理想情况下,我还希望能够对填充表单的值进行一些处理。我该怎么做?
答案 0 :(得分:4)
我设法搞清楚了。覆盖整个add_view
方法似乎对我来说太混乱了。值得庆幸的是,Django允许您替换request
的{{1}} dict(用于预先填充管理表单)。以下对我有用:
GET
这样,我从URL中的参数获取'source'对象,从中加载我需要的值,用它们做我想要的,并预先填充表单。
答案 1 :(得分:2)
您可以覆盖add_view
实例的方法ModelAdmin
。添加一个对象,将对象的pk
设置为None
,并将该对象作为instance
提供给表单。具有pk == None
的对象将始终作为新对象插入到表单save()