我想在我的模型中添加管理面板按钮,我有覆盖模板(路径:templetes/admin/myapp/mymodel/change_list.html
)
change_list.html
{% extends "admin/change_list.html" %}
{% load i18n admin_static %}
{% block result_list %}
<div class="object-tools">
<a href="{% url 'myurl' %}" class="btn btn-high btn-success">Import</a>
</div>
{{ block.super }}
{% endblock %}
在admin.py
中class ImportAdmin(admin.ModelAdmin):
change_list_template = 'admin/myapp/mymodel/change_list.html'
但是我看不到按钮。
答案 0 :(得分:9)
它的工作方式如下(“导入”按钮右侧)。
Django = 1.11
admin / change_list.html:使用“admin:”添加网址。否则,它将无法解析URL。
{% extends "admin/change_list.html" %}
{% load i18n admin_static %}
{% block object-tools-items %}
{{ block.super }}
<li>
<a href="{% url 'admin:myurl' %}" class="btn btn-high btn-success">Import</a>
</li>
{% endblock %}
admin.py:添加自定义模板网址
class ImportAdmin(admin.ModelAdmin):
change_list_template = 'admin/myapp/mymodel/change_list.html'
Django&gt; 1.8
settings.py:TEMPLATE_LOADERS deprecated。设置TEMPLATES如下。
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': False,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
'loaders': [
'admin_tools.template_loaders.Loader',
('django.template.loaders.cached.Loader', [
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
]),
],
},
},
]
答案 1 :(得分:1)
您将能够看到列表页面顶部Add
按钮旁边的按钮,其中包含以下内容。
{% extends "admin/change_list.html" %}
{% load i18n admin_static %}
{% block object-tools-items %}
{{ block.super }}
<li>
<a href="{% url 'myurl' %}" class="btn btn-high btn-success">Import</a>
</li>
{% endblock %}
答案 2 :(得分:1)
添加按钮的另一种选择是使用 django-object-actions。
首先,安装它:pip install django-object-actions
。 (如果您有需求文件,也可以将 django-object-actions
添加到您的需求文件中)。
其次,将 django_object_actions
添加到您的 INSTALLED_APPS
。
然后您可以像这样在 admin.py
中使用它:
from django.contrib import admin
from django_object_actions import DjangoObjectActions
class ImportAdmin(DjangoObjectActions, admin.ModelAdmin):
def import(modeladmin, request, queryset):
print("Import button pushed")
changelist_actions = ('import', )
您现在应该在管理中看到一个导入按钮,按下后,import
中定义的 ImportAdmin
函数将被调用。