加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

django – Djanjo admin:单击ForeignKey下拉列表旁边的add-anot

发布时间:2020-12-20 11:33:03 所属栏目:Python 来源:网络整理
导读:在Django Admin中,当你修改一个对象属性时,如果有一个ForeignKey,它将有一个包含所有选项的下拉框,另外还有一个“”按钮来添加更多选项.当我点击它时,我想预先填写一些数据. 我注意到如果我可以修改URL,我可以这样做(例如:http:// localhost:8000 / admin
在Django Admin中,当你修改一个对象属性时,如果有一个ForeignKey,它将有一个包含所有选项的下拉框,另外还有一个“”按钮来添加更多选项.当我点击它时,我想预先填写一些数据.

我注意到如果我可以修改URL,我可以这样做(例如:http:// localhost:8000 / admin / app / model / add /?field = value其中字段和值是以编程方式修改的.)

我想我必须覆盖admin.ModelAdmin使用的forms.ModelForm中的某些内容,但我不确定是什么.

解决方法

Django允许您替换请求的GET字典(它用于预填充管理表单).

如果要在url中发送模型表单的字段值,Django将自动从url get参数中获取值.例如,考虑
“http:// myhost / admin / app / model / add /?name = testname”,它将在admin add view模板中预填充表单的’name’字段,其值为’testname’.

但是如果你在你的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"... nn[" + source.url + "]",})

            request.GET = g

        return super(ArticleAdmin,self).add_view(request,form_url,extra_context)

它只是一个例子.它与你的模型和领域:)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读