2012-03-01 52 views
2

私の開発環境でこのエラーが発生しています。私はこれを理解しようとするのに、あまりにも長い時間を費やしてきました。特に、私が顔を見ていると想像しています。モデルの1つに対して新しいModelFormを作成してから、このエラーが発生しました。私のmodels.pyファイルの "admin.site.register(ModelName)"の行をコメントアウトしても、管理サイトのデータをもう検査することはできません...djangoエラー: "Caught AlreadyRegistered"?一度だけモデルを登録しました

ここはエラー:

Environment: 


Request Method: GET 
Request URL: http://127.0.0.1:8000/admin/ 

Django Version: 1.3.1 
Python Version: 2.7.2 
Installed Applications: 
['django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.sites', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'django.contrib.admin', 
'django.contrib.admindocs', 
'azcerts.certmanager'] 
Installed Middleware: 
('django.middleware.common.CommonMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.middleware.csrf.CsrfResponseMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware') 


Traceback: 
File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response 
    101.        request.path_info) 
File "C:\Python27\lib\site-packages\django\core\urlresolvers.py" in resolve 
    250.    for pattern in self.url_patterns: 
File "C:\Python27\lib\site-packages\django\core\urlresolvers.py" in _get_url_patterns 
    279.   patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) 
File "C:\Python27\lib\site-packages\django\core\urlresolvers.py" in _get_urlconf_module 
    274.    self._urlconf_module = import_module(self.urlconf_name) 
File "C:\Python27\lib\site-packages\django\utils\importlib.py" in import_module 
    35.  __import__(name) 
File "C:\Users\ntagg\Code\azcerts\urls.py" in <module> 
    3. from certmanager.views import addone 
File "C:\Users\ntagg\Code\azcerts\certmanager\views.py" in <module> 
    4. from forms import CertForm 
File "C:\Users\ntagg\Code\azcerts\forms.py" in <module> 
    4. from certmanager.models import UserProfile, Cert 
File "C:\Users\ntagg\Code\azcerts\certmanager\models.py" in <module> 
    52. admin.site.register(UserProfile) 
File "C:\Python27\lib\site-packages\django\contrib\admin\sites.py" in register 
    85.     raise AlreadyRegistered('The model %s is already registered' % model.__name__) 

Exception Type: AlreadyRegistered at /admin/ 
Exception Value: The model UserProfile is already registered 

はここにmodels.pyです:

#models.py 
from django.db import models 
from django.contrib import admin 
from django.contrib.auth.models import User 
from django.contrib.localflavor.us.models import USStateField 

class Cert(models.Model): 
    # My fields are here... 

    def __unicode__(self): 
     return self.fieldname 

class UserProfile(models.Model): 
    # My fields are here... 

    def __unicode__(self): 
     return self.fieldname 

admin.site.register(UserProfile) 
admin.site.register(Cert) 

答えて

5

は、あなたのmodels.pyであなたのモデルを登録するアプリのadmin.pyを作成し、そこにそれをしないでください。

# admin.py 
from django.contrib import admin 
from myapp.models import Cert, UserProfile 
admin.site.register(Cert) 
admin.site.register(UserProfile) 

説明:あなたは、モデルのフォームを作成し

、Djangoはあなたのmodels.py二回インポートされた:一回のパスazcerts.certmanager.modelsで(それはあなたのINSTALLED_APPSであるとして)、再度パスcertmanager.modelsに(モジュールにここでモデル・フォームを定義します)。 Djangoがmodels.pyをインポートした2回目に、モデルを再度登録しようとしてエラーを出しました。

登録コマンドをadmin.pyに移動すると、モデルが一度だけ登録されるようになります。

models.pyは、このような2つの異なるパスにインポートすることがちょっと面倒です。デフォルトのプロジェクトレイアウトはDjango 1.4で変更されました。これにより、このような問題を防ぐことができます。

+0

intersting、これを試用します – icn

+0

ありがとうございました!これですぐに修正されました。 – ntaggart

関連する問題