Python Django为管理站点使用多个包

Python Django为管理站点使用多个包,python,django,django-import-export,Python,Django,Django Import Export,我使用2个django包:(用于更改模型的顺序)和(用于将csv直接导入到我的模型中) 问题是,如果我将这两个包添加到我的模型管理员中,例如 class CategoryAdmin(SortableAdmin, ImportExportModelAdmin): 它们相互超越 这些按钮要么仅显示用于管理排序表,要么显示用于Django导入导出。有没有什么方法可以将两者整合在一起?或者,我是否可以交换另一个软件包,以便实现相同的功能(1.更改模型的顺序,2.将csv直接导入模型)我通过在页面上

我使用2个django包:(用于更改模型的顺序)和(用于将csv直接导入到我的模型中)

问题是,如果我将这两个包添加到我的模型管理员中,例如

class CategoryAdmin(SortableAdmin, ImportExportModelAdmin):
它们相互超越


这些按钮要么仅显示用于管理排序表,要么显示用于Django导入导出。有没有什么方法可以将两者整合在一起?或者,我是否可以交换另一个软件包,以便实现相同的功能(1.更改模型的顺序,2.将csv直接导入模型)

我通过在页面上使用解决了这个问题。Admin Sortable和Django导入导出都以不同的方式覆盖Admin change_list.html模板,这就是为什么它们不能很好地结合在一起

我使用adminsortable模板作为我的基础(在
site\u packages/adminsortable/templates/adminsortable/change\u list\u和\u sort\u link.html
中找到),并从django导入导出模板中添加了一些片段(在
site\u packages/import\u export/templates/admin/import\u export/change\u list\u import.html中找到)要获取此合并模板,请执行以下操作:

{% extends change_list_template_extends %}
{% load i18n %}

{% block object-tools-items %}
    {% for sorting_filter in sorting_filters %}
    <li>
        <a href="./sort/?sort_filter={{ forloop.counter0 }}">{% trans 'Change Order of' %} {{ sorting_filter }}</a>
    </li>
    {% empty %}
    <li>
        <a href="./sort/">{% trans 'Change Order' %}</a>
    </li>
    {% endfor %}
    {% include "admin/import_export/change_list_import_item.html" %}
    {% include "admin/import_export/change_list_export_item.html" %}
    {{ block.super }}
{% endblock %}
将导入导出按钮添加到模板中

然后,您需要告诉django使用此模板。该类有一个名为
sortable\u change\u list\u和\u sort\u link\u template
的字段,您可以覆盖该字段以使用新的自定义模板。因此,您的管理类将如下所示:

class CategoryAdmin(ImportExportMixin, SortableAdmin):
    sortable_change_list_with_sort_link_template = 'admin/category/change_list_import_export_sortable.html'
假设您将自定义模板放入
admin/category/change\u list\u import\u export\u sortable.html

如果一切正常,您的管理页面顶部应显示所有3个按钮:

在使用导入导出或还原的admin sortable时,我也遇到同样的问题。到目前为止,据我所知,还没有治愈的方法。这对我很有效,我正在使用django jet admin。唯一的问题是SortableAdmin需要在ImportExportMixin之前出现。像这样
类CategoryAdmin(SortableAdmin,ImportExportMixin):
我还必须向模板添加一个样式,以使用CSS内联flex显示列表中的按钮。
class CategoryAdmin(ImportExportMixin, SortableAdmin):
    sortable_change_list_with_sort_link_template = 'admin/category/change_list_import_export_sortable.html'