gpt4 book ai didi

python - Django 使用超过 1 个包作为管理站点

转载 作者:行者123 更新时间:2023-11-30 22:39:41 36 4
gpt4 key购买 nike

我正在使用 2 个 django 包:Admin sortable (用于更改模型的顺序)和 Django import export (用于将 csv 直接导入到我的模型中)。

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

class CategoryAdmin(SortableAdmin, ImportExportModelAdmin):

它们相互覆盖。

enter image description here

enter image description here

这些按钮仅针对管理员排序或 Django 导入导出显示。无论如何,我可以将它们整合在一起吗?或者,是否有另一个包我可以换出,以便我可以实现相同的功能(1.更改模型的顺序,2.将csv直接导入模型)

最佳答案

我能够通过 overriding the template 解决这个问题在页面上使用。 Admin Sortable 和 Django Import Export 都以不同的方式覆盖 admin change_list.html 模板,这就是它们不能很好地协同工作的原因。

我使用 adminsortable 模板作为基础(位于 site_packages/adminsortable/templates/adminsortable/change_list_with_sort_link.html 中),并添加了 django 导入导出模板中的一些片段(位于 site_packages/import_export/templates/admin/import_export/change_list_import_export.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 %}

行:

{% include "admin/import_export/change_list_import_item.html" %}
{% include "admin/import_export/change_list_export_item.html" %}

将导入导出按钮添加到模板中。

然后,你需要告诉 django 使用这个模板。 SortableAdminBase类有一个名为 sortable_change_list_with_sort_link_template 的字段,您可以覆盖该字段以使用新的自定义模板。所以你的管理类将如下所示:

class CategoryAdmin(ImportExportMixin, SortableAdmin):
sortable_change_list_with_sort_link_template = 'admin/category/change_list_import_export_sortable.html'

假设您将自定义模板放入 admin/category/change_list_import_export_sortable.html

如果一切顺利,您应该会在管理页面顶部看到所有 3 个按钮: Django Import Export Admin Sortable Buttons Screenshot

关于python - Django 使用超过 1 个包作为管理站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43066899/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com