为相关字段覆盖Django Admin的“添加”按钮

时间:2020-01-27 09:49:58

标签: python django django-forms django-admin django-related-manager

我一直在尝试为Django admin中的相关字段覆盖+(add)按钮的功能,以打开新标签页,而不是弹出窗口。我查看了RelatedObjectLookup.js,以了解其工作原理,但仍然坚持通过打开新标签来实现相同的功能。有什么方法可以实现这种事情或呈现“ 内联”形式?

1 个答案:

答案 0 :(得分:2)

要在新标签页中打开相关字段+Add按钮,必须为所有这些链接设置target="_blank"属性。

从您的管理员覆盖admin/change_form.html

class BookAdmin(admin.ModelAdmin):
    add_form_template = 'book/admin/change_form.html'

在html中,设置必填属性并删除

{% extends 'admin/change_form.html' %}

{% load static %}


{% block admin_change_form_document_ready %}
    {{ block.super }}

    <script type="text/javascript">
    (function($) {
        $(document).ready(function() {
            classes = document.getElementsByClassName('add-related');
            for (i=0; i<classes.length; i++) {
                // set target to blank
                classes[i].setAttribute('target', '_blank');
                // remove the class to prevent django listeners overriding click on link
                classes[i].classList.remove("related-widget-wrapper-link");
            };

        });
    })(django.jQuery);
    </script>
{% endblock %}

现在,当您单击相关字段时,它将在新选项卡中打开。

另一种选择是使用inline admin as mentioned here in docs

相关问题