已在/appname/注册:模型用户已经注册。

38

我正试图将django.contrib.auth用户与我的自定义UserProfile连接起来,但当我访问该网站时,会出现“AlreadyRegistered”错误。

以下是追溯信息:

Environment:


Request Method: GET
Request URL: myurl.com/django/appname/

Django Version: 1.4.2
Python Version: 2.6.8
Installed Applications:
('django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.admin',
 'polls',
 'appname',
 'registration',
 'django.contrib.humanize')
Installed Middleware:
('django.middleware.common.CommonMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware')


Traceback:
File "/usr/lib/python2.6/site-packages/django/core/handlers/base.py" in get_response
  101.                             request.path_info)
File "/usr/lib/python2.6/site-packages/django/core/urlresolvers.py" in resolve
  298.             for pattern in self.url_patterns:
File "/usr/lib/python2.6/site-packages/django/core/urlresolvers.py" in url_patterns
  328.         patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "/usr/lib/python2.6/site-packages/django/core/urlresolvers.py" in urlconf_module
  323.             self._urlconf_module = import_module(self.urlconf_name)
File "/usr/lib/python2.6/site-packages/django/utils/importlib.py" in import_module
  35.     __import__(name)
File "/var/www/mysite/mysite/urls.py" in <module>
  3. admin.autodiscover()
File "/usr/lib/python2.6/site-packages/django/contrib/admin/__init__.py" in autodiscover
  29.             import_module('%s.admin' % app)
File "/usr/lib/python2.6/site-packages/django/utils/importlib.py" in import_module
  35.     __import__(name)
File "/var/www/mysite/appname/admin.py" in <module>
  4. admin.site.register(User)
File "/usr/lib/python2.6/site-packages/django/contrib/admin/sites.py" in register
  80.                 raise AlreadyRegistered('The model %s is already registered' % model.__name__)

Exception Type: AlreadyRegistered at /appname/
Exception Value: The model User is already registered

我相当肯定这起源于我的应用程序的models.py文件,因为那是我做了大量更改的地方,我认为。

from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save

class Tag(models.Model):
        pics = models.ManyToManyField('Picture', blank=True)
        name = models.CharField(max_length=30)

        def __unicode__(self):
                return self.name

class UserProfile(models.Model):
        name = models.CharField(max_length=20)
        date_joined = models.DateTimeField('date joined')
        auth_user = models.OneToOneField(User)

        def __unicode__(self):
                return self.name

def create_user_profile(sender, instance, created, **kwargs):
        if created:
                UserProfile.objects.create(user=instance)

post_save.connect(create_user_profile, sender=User)

class Picture(models.Model):
        name = models.CharField(max_length=100)
        pub_date = models.DateTimeField('date published')
        tags = models.ManyToManyField('Tag', blank=True)
        owner = models.ForeignKey('UserProfile')
        content = models.ImageField(upload_to='instaton')

        def __unicode__(self):
                return self.name

class Comment(models.Model):
        content = models.CharField(max_length=500)
        date = models.DateTimeField('date commented')
        commenter = models.ForeignKey('UserProfile')
        pic = models.ForeignKey('Picture')

        def __unicode__(self):
                return self.content
1个回答

80

如果你想在你的应用的admin.py中定义一个自定义用户管理员,你必须先注销默认的User模型管理员,然后再注册你自己的。

admin.site.unregister(User)
admin.site.register(User, MyUserAdmin)

2
当我修改我的应用程序以使用原始的auth.User对象而不是我的自定义、命名不佳的User对象时,也发生了这种情况。因此,我的问题是尝试在已经注册的情况下注册auth.User对象。移除register(User)调用解决了这个问题。 - brodney

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接