Django - AttributeError: 'UserProfile'对象没有属性'urls'。

5
我正在尝试在Django中扩展User。这个新的User应该比内置的User有更多的属性,其中一些属性在注册时是必需的。此外,我希望在Admin中看到这种新类型的用户。我已经按照官方教程和这个 YouTube 视频进行了操作,但出现了一个错误
我是Django的新手,所以我找不到问题出在哪里。你知道哪里出了问题吗?
编辑:我已经尝试停止服务器和 makemigrations - 仍然出现相同的错误。 CMD:
  File "C:\Users\Milano\PycharmProjects\FutileStudio\SolutionsForLanguages\venv\
lib\site-packages\django\core\urlresolvers.py", line 417, in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
  File "C:\Users\Milano\PycharmProjects\FutileStudio\SolutionsForLanguages\venv\
lib\site-packages\django\utils\functional.py", line 33, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "C:\Users\Milano\PycharmProjects\FutileStudio\SolutionsForLanguages\venv\
lib\site-packages\django\core\urlresolvers.py", line 410, in urlconf_module
    return import_module(self.urlconf_name)
  File "c:\python27\Lib\importlib\__init__.py", line 37, in import_module
    __import__(name)
  File "C:\Users\Milano\PycharmProjects\FutileStudio\SolutionsForLanguages\Solut
ionsForLanguagesProject\urls.py", line 22, in <module>
    url(r'^admin/', admin.site.urls),
  File "C:\Users\Milano\PycharmProjects\FutileStudio\SolutionsForLanguages\venv\
lib\site-packages\django\contrib\admin\sites.py", line 303, in urls
    return self.get_urls(), 'admin', self.name
  File "C:\Users\Milano\PycharmProjects\FutileStudio\SolutionsForLanguages\venv\
lib\site-packages\django\contrib\admin\sites.py", line 287, in get_urls
    url(r'^%s/%s/' % (model._meta.app_label, model._meta.model_name), include(mo
del_admin.urls)),
AttributeError: 'UserProfile' object has no attribute 'urls'

MODELS.PY:

...
from django.db.models.signals import post_save
...
class UserProfile(models.Model):
    user = models.OneToOneField(User,on_delete=models.CASCADE)

    first_name = models.CharField(max_length=40)
    surname = models.CharField(max_length=40)
    email = models.EmailField()
    telephone = models.CharField(max_length=40)

    def __unicode__(self):
        return '{} {}'.format(self.first_name,self.surname)

def create_profile_user_callback(sender,instance, **kwargs):
    profile, new = UserProfile.objects.get_or_create(user=instance)
post_save.connect(create_profile_user_callback, User)

ADMIN.PY:

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from models import *
from .models import UserProfile

admin.site.register(AdminContact)

class UserProfileInline(admin.StackedInline):
    model = UserProfile
    can_delete = False
    verbose_name_plural = 'User_Profile'

class UserAdmin(BaseUserAdmin):
    inlines = (UserProfileInline, )

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

URLS.PY:

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^about', TemplateView.as_view(template_name='static/about-us.html')),
    url(r'^terms-and-conditions', TemplateView.as_view(template_name='static/terms-and-conditions.html')),
    url(r'^faq', TemplateView.as_view(template_name='static/faq.html')),
    url(r'^$', views.index),
    url(r'^contact-us', views.contact_us),
]

registration_patterns = [
    url(r'register', views.register),
    url(r'register_success', views.register_success),
]

urlpatterns += registration_patterns
2个回答

5
在admin.py文件中,你正在将UserProfile模型注册为User的管理员; 我怀疑你应该注册modeladmin。
admin.site.register(User,UserAdmin)

(请注意,默认的用户模型已经包含了名字(first_name)、姓氏(last_name)和邮箱(email),所以我不知道为什么你在UserProfile模型中重复添加了它们。)

4

我有同样的问题。我通过在admin.py文件中分别注册这两个模型来解决它,即

admin.site.register(User)
admin.site.register(UserAdmin)

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