首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >django错误:“捕捉到AlreadyRegistered"?只注册了一次

django错误:“捕捉到AlreadyRegistered"?只注册了一次
EN

Stack Overflow用户
提问于 2012-03-01 20:10:09
回答 1查看 2.8K关注 0票数 2

在我的开发环境中,我得到了这个错误。我花了很长时间试图弄清楚这件事,尤其是因为我想象它正盯着我的脸。我针对我的一个模型创建了一个新的ModelForm,然后开始得到这个错误。如果我注释掉我的admin.site.register(ModelName)文件中的“models.py (ModelName)”行,它就会消失,但是我不能再检查管理站点中的数据了.

,这里是错误:

代码语言:javascript
运行
复制
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:

代码语言:javascript
运行
复制
#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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-01 20:29:57

不要在你的models.py中注册你的模型,为你的应用程序创建一个admin.py,然后在那里做。

代码语言:javascript
运行
复制
# 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时,它再次尝试注册模型,并给出了错误。

通过将寄存器命令移动到admin.py中,可以确保模型只注册一次。

在像这样的两种不同的路径上导入models.py有点麻烦。Django 1.4中的默认项目布局已经更改,这将防止出现这样的问题。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9523268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档