【问题标题】:Django Admin: Link to Admin-Interface of ForeignKey beneath add and modifyDjango Admin: Link to Admin-Interface of ForeignKey under add and modify
【发布时间】:2018-10-08 12:11:23
【问题描述】:

我有一个名为 Foo 的 django 模型

IT 拥有“远程”的外键。

这在 django admin 中显示如下:

下拉菜单下方有两个图标:“修改”和“添加”。

如果我可以有第三个图标,那就太酷了:给定远程实例的管理页面的链接。

这是怎么做到的?

某种可重用性会很好,因为我希望这个功能用于多个管理页面。

【问题讨论】:

  • 编辑图标已经链接到给定外键的管理员,尽管在弹出窗口中......或者您只是想要第三个图标?
  • 我想要第三个不打开弹出窗口的图标。只是一个普通的链接会很好。
  • 如果你还需要的话,我已经发布了一个答案。
  • 覆盖管理模板,然后在底部添加一些 JS 来监听下拉列表的变化。每个下拉选项在“值”属性中都有 pk,因此您可以添加一个链接,将您带到管理面板上的编辑/pk 页面

标签: django django-admin


【解决方案1】:

我没有亲自测试过,但要添加更多图标,您应该能够通过覆盖 related_widget_wrapper 的小部件的管理模板来完成此操作。

查看这两个文件:

django/contrib/admin/templates/admin/related_widget_wrapper.html django/contrib/admin/templates/admin/widgets/related_widget_wrapper.html

具体来说,您希望生成更改 url:{{ change_related_template_url }} 没有 {{ url_params }}

覆盖管理模板:

https://docs.djangoproject.com/en/2.0/ref/contrib/admin/#admin-overriding-templates

【讨论】:

    【解决方案2】:

    有一个开始代码可以帮助你

    1 - 首先你需要使用 javascript 来处理动态元素,所以你可以像这样使用一些:

    $('a.related-widget-wrapper-link add-related, a#add_id_client').after('<a href="#" class="float-right"> <img src="/static/application/img/avatar.jpg"> </a>');
    

    注意:a#add_client,更改为您当前的型号名称

    2 - 在javascript中将您的网址设置为&lt;a href=""&gt;&lt;/a&gt;

    3 - 最后,使用class Meta: 或覆盖base.html 将您的.js 代码链接到您的模板。例如:

    base.html 结束文件

        {% block footer %}
        {% endblock %}
    
    </div>
    <!-- END Container -->
    <script type="text/javascript" src="{% static "application/js/my_custom_javascript.js"%}"></script>
    
    </body>
    </html>
    

    【讨论】:

      猜你喜欢
      • 2011-09-22
      • 1970-01-01
      • 1970-01-01
      • 2012-02-15
      • 2012-06-29
      • 1970-01-01
      • 2016-06-28
      • 2014-11-18
      • 2021-04-28
      相关资源
      最近更新 更多