我正在使用Django 1.7.8和DjangoCMS 3.1。我想添加自定义用户模型。我得到的例外是我的自定义模型没有注册。我发现了类似的问题,但我无法修复它。
我的项目结构:
.
├── djangocms
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── settings.py
│ ├── settings.pyc
│ ├── static
│ ├── templates
│ │ ├── base.html
│ │ ├── feature.html
│ │ ├── menu.html
│ │ └── page.html
│ ├── urls.py
│ ├── wsgi.py
│ └── wsgi.pyc
├── manage.py
├── media
├── project.db
├── static
└── users
├── admin.py
├── apps.py
├── apps.pyc
├── __init__.py
├── __init__.pyc
├── migrations
│ └── __init__.py
├── models.py
├── tests.py
└── views.py
在settings.py中
AUTH_USER_MODEL = 'users.UserProfile'
用户/ models.py
class UserProfile(AbstractBaseUser, PermissionsMixin):
email = models.EmailField('email address', max_length=255,
unique=True, db_index=True)
更新
我发现有些应用程序在DjangoCMS中崩溃自定义用户模型,当我添加注释然后django注册表找到我的模型。我的设置:
INSTALLED_APPS = (
'djangocms_admin_style',
#'djangocms_text_ckeditor',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.admin',
'django.contrib.sites',
'django.contrib.sitemaps',
'django.contrib.staticfiles',
'django.contrib.messages',
#'cms',
'menus',
'sekizai',
'treebeard',
#'djangocms_style',
#'djangocms_column',
#'djangocms_file',
#'djangocms_flash',
#'djangocms_googlemap',
#'djangocms_inherit',
#'djangocms_link',
#'djangocms_picture',
#'djangocms_teaser',
#'djangocms_video',
'reversion',
'djangocms',
'users',
)
答案 0 :(得分:1)
您无法将abstract model设置为AUTH_USER_MODEL
。
基本上抽象模型还不是一个具体的模型。您需要一个具体的User
模型。这也解释了为什么你的Model 'users.UserProfile' is not registered
此外,您的UserProfile
有些奇怪,可能会被称为User
或MyUser
或WhateverUser
。 Django有一个历史原因,UserProfile
命名约定总是通过User
引用OneToOneField
模型的附加信息。 See this Django 1.4 (old docs)
答案 1 :(得分:1)
必须在INSTALLED_APPS中的cms之前加载定义模型的应用程序。您需要在CMS之前将'users'
移到列表中。
此外,DjangoCMS期望用户模型至少具有以下字段:
此外,它应该继承自AbstractBaseUser和PermissionsMixin(或AbstractUser),并且必须将一个字段定义为USERNAME_FIELD(有关详细信息,请参阅Django文档)并定义get_fullname()方法。
模型也必须可以通过django admin进行编辑并注册管理类。