DrR*_*nja 3 django django-admin
在Django Admin中,当你修改一个对象属性时,如果有一个ForeignKey,它将有一个包含所有选项的下拉框,另外还有一个"+"按钮来添加更多选项.当我点击它时,我想预先填写一些数据.
我注意到如果我可以修改URL(例如:http://localhost:8000/admin/app/model/add/?field=valuewhere field和value以编程方式修改),我可以这样做.
我想我要重写的东西forms.ModelForm的admin.ModelAdmin用途,但我不知道是什么.
小智 7
Django允许您替换请求的GET字典(它用于预填充管理表单).
如果要在url中发送模型表单的字段值,Django将自动从url get参数中获取值.例如,考虑到
"http://myhost/admin/app/model/add/?name=testname"它,它将在admin add view模板中使用值'testname'预填充表单的'name'字段.
但是如果你在你的url中发送任何id,那么你需要通过覆盖add_view函数来修改get参数.
取自stackoverflow的答案
class ArticleAdmin(admin.ModelAdmin):
// ...
def add_view(self, request, form_url='', extra_context=None):
source_id = request.GET.get('source',None)
if source_id != None:
source = FeedPost.objects.get(id=source_id)
// any extra processing can go here...
g = request.GET.copy()
g.update({
'title':source.title,
'contents':source.description + u"... \n\n[" + source.url + "]",
})
request.GET = g
return super(ArticleAdmin, self).add_view(request, form_url, extra_context)
Run Code Online (Sandbox Code Playgroud)
它只是一个例子.它与你的模型和领域:)
| 归档时间: |
|
| 查看次数: |
1833 次 |
| 最近记录: |