Django1.2管理者でこのエラーが発生しています。
シナリオ:
私には2つのアプリケーションがあります。たとえばapp1
、app2
プロジェクト内です。これらのアプリの両方で、それぞれのadmin.py
ファイルを定義して、各アプリのそれぞれのモデルをdjangoの管理サイトにフックしました。
admin.py内app1
で、app1の3つのモデルクラスに対応する3つのModelAdminクラスを定義し、そのうちの2つを管理サイトに登録しました。
class App11stModelAdmin (admin.ModelAdmin):
#class definitions here
#This class is an abstract class
#class Meta:
# abstract = True
class App12ndModelAdmin (admin.ModelAdmin):
#class definitions here
class App13rdModelAdmin (admin.ModelAdmin):
#class definitions here
#register to admin site two of them
admin.site.register(App12ndModel, App12ndModelAdmin)
admin.site.register(App13rdModel, App13rdModelAdmin)
内部では、モデルの管理モデルを定義するためapp2
にインポートしました。app1.App11stModelAdmin
app2
のadmin.py内app2
:
from app1.admin import App11stModelAdmin
class App21stModelAdmin(App11stModelAdmin):
#define some things here
#register App21stModelAdmin to admin site
admin.site.register(App21stModel, App21stModelAdmin)
このコードでは、次のエラーメッセージが表示されます。
AlreadyRegistered at /admin/
The model App12ndModel is already registered
Request Method: GET
Request URL: http://127.0.0.1:8000/admin/
Django Version: 1.2
Exception Type: AlreadyRegistered
Exception Value:
The model App12ndModel is already registered
そのモデルの管理者を一度だけ登録していると確信しているので、これは奇妙です。そのモデルのregisterステートメントをコメントアウトすると、同じエラーが発生しましたが、モデルの場合はエラーになりますApp13rdModel
。
それまでの間、この問題を修正するために、登録届出書を削除し、代わりにapp1
admin.py内の「static」関数内に配置しました。
のように:app1admin.py内
def register():
admin.site.register(App12ndModel, App12ndModelAdmin)
admin.site.register(App13rdModel, App13rdModelAdmin)
次にapp2admin.pyで
インポートに登録機能を含めました:
from app1.model import App11stModelAdmin, register
......
......
#register the two admin model in app1 inside app2 admin.py by calling the register function
register()
そして、これは機能します。すでに登録済みのエラーが発生しなくなりました。
質問:
そのエラーの原因となった私は何をしましたか?私はDjangoとPythonを初めて使用します。
どうもありがとうございます!