Переопределение Django Кнопка «Добавить» администратора для связанных полей - PullRequest
0 голосов
/ 27 января 2020

Я пытался переопределить функционирование кнопки + (добавить) для связанных полей в Django admin, чтобы открыть новую вкладку вместо всплывающего окна. Я посмотрел на RelatedObjectLookup. js, чтобы увидеть, как он работает, но все еще не смог реализовать ту же функцию, открыв новую вкладку. Есть ли способ реализовать такую ​​вещь или вывести форму ' inline '?

1 Ответ

1 голос
/ 29 января 2020

Чтобы открыть соответствующие поля +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 %}

Теперь, когда вы нажимаете на связанный поля, он откроется в новой вкладке.

Альтернативным вариантом является использование встроенного администратора, как указано здесь в документации .

...