0

すべてのアプリケーション モデルを管理者に登録したいのですが、自動的に作成する方法はありますか。たくさんのアプリがあるので、自動登録する必要があります

4

1 に答える 1

-1

私の知る限り、それを行うための短い/直接的な方法はありませんが、これを実現するための短いスニプレットを書くことができます。これは、これを処理するために使用するスニペットです。ただし、管理ファイルにいくつかの変更を加える必要があります。

somefile.py

from django.contrib import admin


def admin_register(namespace):
    for name, model_admin in namespace.copy().iteritems():
        if name.endswith("Admin"):
            model = namespace[name[:-5]]
            try:admin.site.register(model, model_admin)
            except:raise

次に、admin.pyファイルを編集し、次Adminのようにすべての管理クラスに postfix を追加する必要があります。

admin.py

from somefile import admin_register

class SomeModelAdmin(admin.ModelAdmin):
    pass

admin.pyファイルの最後に、次を追加します。

admin_register(namespace=globals())

これは、グローバル名前空間で定義されたすべてのクラス、関数、および変数を取得し、で終わるものを選択しますAdmin。各管理ファイルの末尾にこの行を含める必要があります。

Admin クラスの定義について、Admin クラスに属性を指定したくない場合は、単に と記述しpassます。管理パネルに表示したい管理クラスを追加するだけです。

于 2013-07-29T10:53:00.827 に答える