2012-12-04 47 views
16

Tôi đang cố gắng kết nối người dùng django.contrib.auth với UserProfile của riêng tôi và tôi gặp lỗi 'Đã đăng ký' khi tôi truy cập trang web .Đã đăng ký tại/appname /: Người dùng đã đăng ký

Đây là traceback:

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 

Tôi khá chắc chắn điều này bắt nguồn từ models.py ứng dụng của tôi, nhìn thấy như đó là tất cả tôi đã thay đổi một cách lớn, tôi tin.

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 

Trả lời

35

Khi bạn định nghĩa một quản trị người dùng tùy chỉnh trong của admin.py ứng dụng của bạn, trước tiên bạn phải unregister mặc định User mô hình quản trị trước khi đăng ký của riêng bạn.

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

Điều này cũng xảy ra khi tôi sửa đổi ứng dụng của mình để sử dụng đối tượng gốc. Đối tượng người dùng thay vì đối tượng Người dùng tùy chỉnh, được đặt tên kém. Vì vậy, vấn đề của tôi đã cố gắng để đăng ký đối tượng auth.User khi nó đã được đăng ký. Xóa cuộc gọi đăng ký (Người dùng) đã sửa lỗi đó. – brodney

Các vấn đề liên quan