首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Django Reversion和Django-Import-Export的Django Admin

使用Django Reversion和Django-Import-Export的Django Admin
EN

Stack Overflow用户
提问于 2014-08-21 07:29:28
回答 4查看 1.3K关注 0票数 11

我正在尝试为相同的模型启用Django Reversion和Django-Import-Export ...不确定我的逻辑是否正确,或者我是否应该使用多个admin.py文件等

我尝试过以下方法,但这只允许Django恢复工作,如果我在Import Export Works周围切换它们的话。如果我能同时启用这两个功能,那就太棒了。

代码语言:javascript
复制
class MyModelAdmin(reversion.VersionAdmin, ImportExportModelAdmin):
    pass

我已经看过这两个项目的readthedocs,但仍然迷失方向。

http://django-reversion.readthedocs.org/en/latest/admin.html#admin https://django-import-export.readthedocs.org/en/latest/getting_started.html

干杯xc0m

EN

回答 4

Stack Overflow用户

发布于 2015-01-12 22:10:20

我遇到了同样的问题,我通过扩展Django admin change_list模板并通过下面的示例添加链接来修复它。

代码语言:javascript
复制
***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
EN

Stack Overflow用户

发布于 2016-07-25 12:11:44

最终结果:

@Aidan Doherty's answer的启发,我创建了一个新类,它是VersionAdminImportMixinExportMixin子类的组合,扩展了自定义的change_list_template

下面是它的外观:

ImportExportVersionModelAdmin.py**:**

代码语言:javascript
复制
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**:**

代码语言:javascript
复制
{% 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 %}

这样我就可以像这样使用它:

代码语言:javascript
复制
class SiteAdmin(ImportExportVersionModelAdmin):
    pass


admin.site.register(Site, SiteAdmin)

它的灵感直接来自于import_export's admin.py ImportExportMixinits change_list_import_export.html template,并结合了reversion's template

注意:您可以将此解决方案应用于多个子类:)

票数 4
EN

Stack Overflow用户

发布于 2014-09-11 07:04:51

我还没有在Reversion中做到这一点,但我认为你会想要使用ImportExportMixin:

代码语言:javascript
复制
from import_export.admin import ImportExportMixin

class MyModelAdmin(ImportExportMixin, reversion.VersionAdmin):
    pass

这就是我在另一个子类中使用它的方法,它工作得很好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25416092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档