すべてのアプリケーション モデルを管理者に登録したいのですが、自動的に作成する方法はありますか。たくさんのアプリがあるので、自動登録する必要があります
1557 次
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 に答える