4👍
I ran into the same problem I fixed it by extending the Django admin change_list template and adding the links through that example below.
***change_list.html****
{% extends "admin/change_list.html" %}
{% load i18n %}
{% block object-tools %}
{% if has_add_permission %}
<ul class="object-tools ">
{% block object-tools-items %}
{% if not is_popup %}
<li><a href="import/" class="import_link">{% trans "Import" %}</a></li>
<li><a href="export/{{ cl.get_query_string }}" class="export_link">{% trans "Export" %}</a></li>
<li><a href="{{recoverlist_url}}" class="recoverlink">{% blocktrans with cl.opts.verbose_name_plural|escape as name %}Recover deleted {{name}}{% endblocktrans %}</a></li>
{% endif %}
<li><a href="add/{% if is_popup %}?_popup=1{% endif %}" class="addlink">{% blocktrans with cl.opts.verbose_name as name %}Add {{ name }}{% endblocktrans %}</a></li>
{% endblock %}
</ul>
{% endif %}
{% endblock %}
***admin.py***
class MyAdmin(ImportExportMixin, MyModelAdmin):
change_list_template = "change_list.html"
resource_class = MyResource
4👍
Final result:
Inspired from @Aidan Doherty’s answer, I created a new class that is a combination of VersionAdmin
, ImportMixin
, ExportMixin
subclasses which extends a custom change_list_template
.
Here’s how it looks:
ImportExportVersionModelAdmin.py
:
from import_export.admin import ImportMixin, ExportMixin
from reversion.admin import VersionAdmin
class ImportExportVersionModelAdmin(ImportMixin, ExportMixin, VersionAdmin):
"""
Import, export and Version admin.
Fixes missing link in change_list admin view :)
"""
#: template for change_list view
change_list_template = 'change_list_import_export_version.html'
templates/change_list_import_export_version.html
:
{% extends "admin/import_export/change_list.html" %}
{% load i18n admin_urls %}
{% block object-tools-items %}
<li><a href="import/" class="import_link">{% trans "Import" %}</a></li>
<li><a href="export/{{ cl.get_query_string }}" class="export_link">{% trans "Export" %}</a></li>
{% if not is_popup and has_add_permission and has_change_permission %}
<li><a href="{% url opts|admin_urlname:'recoverlist' %}" class="recoverlink">{% blocktrans with cl.opts.verbose_name_plural|escape as name %}Recover deleted {{name}}{% endblocktrans %}</a></li>
{% endif %}
{{ block.super }}
{% endblock %}
This way I can use it like this:
class SiteAdmin(ImportExportVersionModelAdmin):
pass
admin.site.register(Site, SiteAdmin)
It’s directly inspired from import_export’s admin.py ImportExportMixin and its change_list_import_export.html template, combined with reversion’s template
Note: You can apply this solution to multiple subclasses 🙂
- Django template: Why block in included template can't be overwritten by child template?
- Python Django Asynchronous Request handling
- Django loading data from fixture after backward migration / loaddata is using model schema not database schema
- Unexpected error: replace() takes 2 positional arguments but 3 were given
1👍
I haven’t done this with Reversion, but I think you’ll want to use the ImportExportMixin:
from import_export.admin import ImportExportMixin
class MyModelAdmin(ImportExportMixin, reversion.VersionAdmin):
pass
That’s how I’m using it with another subclass, and it’s working great.
- Best way to add additional fields to django-rest-framework ModelViewSet when create
- Integrating django-haystack with django-rest-framework?
- How to render django-cms plugin in every page?
- Django and models with multiple foreign keys
- Is there a Python3 compatible Django storage backend for Amazon S3?
0👍
not sure if this is still relevant but here is a quick solution:
{% extends "admin/change_list.html" %}
{% load i18n admin_urls %}
{% block object-tools-items %}
{% if not is_popup and has_add_permission and has_change_permission %}
<li><a href="{% url opts|admin_urlname:'recoverlist' %}" class="recoverlink">{% blocktrans with cl.opts.verbose_name_plural|escape as name %}Recover deleted {{name}}{% endblocktrans %}</a></li>
{% endif %}
{{ block.super }}
{% endblock %}
class CampaignAdmin(ImportExportModelAdmin, VersionAdmin):
pass