为相关字段覆盖 Django Admin 的 "add" 按钮
Overriding Django Admin's "add" button for related fields
我一直在尝试覆盖 Django 管理中相关字段的 +(添加)按钮的功能,以打开一个新选项卡而不是弹出窗口。我查看了 RelatedObjectLookup.js 以了解它是如何工作的,但仍然坚持通过打开一个新选项卡来实现相同的功能。有什么方法可以实现这样的事情或呈现形式 'inline'?
要在新选项卡中打开相关字段 +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。
我一直在尝试覆盖 Django 管理中相关字段的 +(添加)按钮的功能,以打开一个新选项卡而不是弹出窗口。我查看了 RelatedObjectLookup.js 以了解它是如何工作的,但仍然坚持通过打开一个新选项卡来实现相同的功能。有什么方法可以实现这样的事情或呈现形式 'inline'?
要在新选项卡中打开相关字段 +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。