4

django-import-export ライブラリを使用して、定義済みのモデルの一部に django 管理者を介してデータ ダウンロード オプションを提供することに成功しています。

しかし、ユーザー管理を介して同じエクスポート オプションを提供するのは困難です。

私の他のモデルでは、次のようなことをしましたadmin.py

class OtherResource(resources.ModelResource):
    class Meta:
        model = Other

class OtherAdmin(ExportMixin, admin.ModelAdmin):
    # Other admin definition here

私の問題は、のような事前にパッケージ化された Django モデルに同じエクスポート機能を提供することUserです。

私は次のことを試しました...

class UserResource(resources.ModelResource):
    class Meta:
        model = User

class UserAdmin(ExportMixin, UserAdmin):
    pass

しかし、これにはいくつかの問題があります。

  1. Userリスト表示から一連のモデル フィールドを削除します (is_activeや などgroups) 。
  2. excludeUserResource に を追加してもエクスポートからそれらのフィールドが除外されないため、何かが完全に接続されていないことがわかります

私は自分の側で を再作成することができましたUserAdminが、それが不要であることを望んでいます (そして推測しています)。

何か案は?

4

3 に答える 3

6

だから私はいくつかの間違いを犯していました。

  1. 私はばかでした(このプロジェクトに依存して数年前にオーバーライドとして作成したUserAdminではなく、django UserAdminをインポートしていました-これは、UserAdminをオーバーライドするときにフィールドが削除された理由を説明しています)
  2. django-import-export ドキュメントで説明されているように、OtherResource を OtherAdmin に手動でリンクできませんでした

上記のコード サンプルの両方に対する解決策は次のとおりです。

Otherモデルの場合

class OtherResource(resources.ModelResource):
    class Meta:
        model = Other

class OtherAdmin(ExportMixin, admin.ModelAdmin):
    resource_class = OtherResource
    # Other admin definition here

そしてUserモデルのために

class UserResource(resources.ModelResource):
    class Meta:
        model = User
        fields = ('first_name', 'last_name', 'email')

class UserAdmin(ExportMixin, UserAdmin):
    resource_class = UserResource
    pass

admin.site.unregister(User)
admin.site.register(User, UserAdmin)

ビオラ。
すべてが意図したとおりに機能します。
Otherモデルは完全にエクスポートされます。
Userモデルは 3 つの列 (名、姓、電子メール) としてエクスポートされます。

于 2015-03-06T19:14:55.593 に答える