11

同じモデルで Django Reversion と Django-Import-Export を有効にしようとしています...ロジックが正しいかどうか、または複数の admin.py ファイルを使用する必要があるかどうかなどはわかりません

私は次のことを試しましたが、これはDjango Reversionのみが機能することを可能にします.Import Export Worksを切り替えると. 両方を同時に有効にできたら最高です。

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

4

4 に答える 4

4

最終結果:

インポート エクスポート 削除されたリンクを復元する

@Aidan Doherty の answerから着想を得て、 custom を拡張するVersionAdmin, ImportMixin,ExportMixinサブクラスの組み合わせである新しいクラスを作成しましたchange_list_template

外観は次のとおりです。

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 %}

このようにして、次のように使用できます。

class SiteAdmin(ImportExportVersionModelAdmin):
    pass


admin.site.register(Site, SiteAdmin)

これは、 import_export の admin.py ImportExportMixinその change_list_import_export.html テンプレートから直接インスピレーションを得て、 reversion のテンプレートと組み合わせたものです。

注: このソリューションを複数のサブクラスに適用できます :)

于 2016-07-25T04:11:43.670 に答える
4

Django admin change_list テンプレートを拡張し、以下の例のリンクを追加することで修正したのと同じ問題に遭遇しました。

***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
于 2015-01-12T14:10:19.970 に答える