Django CMS 3.1 和 Django 1.7.8 自定义用户模型
Django CMS 3.1 and Django 1.7.8 custom user model
我正在使用 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'
users/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',
)
您不能将 abstract model 设置到您的 AUTH_USER_MODEL
中。
基本上抽象模型还不是具体模型。您需要一个具体的 User
模型。这也解释了为什么您的 Model 'users.UserProfile' is not registered
而且,您的 UserProfile
有点奇怪,它应该被称为 User
或 MyUser
或 WhateverUser
。 Django 有一个历史原因,即 UserProfile
命名约定总是通过 OneToOneField
引用 User
模型的附加信息。 See this Django 1.4 (old docs).
定义模型的应用程序 必须在 INSTALLED_APPS 中的 cms 之前加载。 您需要将列表上移 'users'
,在 CMS 之前。
此外,DjangoCMS 需要一个至少包含以下字段的用户模型:
- 电子邮件
- 密码
- is_active
- is_staff
- is_superuser
此外,它应该继承AbstractBaseUser和PermissionsMixin(或AbstractUser),并且必须定义一个字段作为USERNAME_FIELD(更多细节见Django文档)并定义一个get_fullname()方法.
模型还必须可以通过 django admin 进行编辑,并且有一个管理员 class 注册。
我正在使用 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'
users/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',
)
您不能将 abstract model 设置到您的 AUTH_USER_MODEL
中。
基本上抽象模型还不是具体模型。您需要一个具体的 User
模型。这也解释了为什么您的 Model 'users.UserProfile' is not registered
而且,您的 UserProfile
有点奇怪,它应该被称为 User
或 MyUser
或 WhateverUser
。 Django 有一个历史原因,即 UserProfile
命名约定总是通过 OneToOneField
引用 User
模型的附加信息。 See this Django 1.4 (old docs).
定义模型的应用程序 必须在 INSTALLED_APPS 中的 cms 之前加载。 您需要将列表上移 'users'
,在 CMS 之前。
此外,DjangoCMS 需要一个至少包含以下字段的用户模型:
- 电子邮件
- 密码
- is_active
- is_staff
- is_superuser
此外,它应该继承AbstractBaseUser和PermissionsMixin(或AbstractUser),并且必须定义一个字段作为USERNAME_FIELD(更多细节见Django文档)并定义一个get_fullname()方法.
模型还必须可以通过 django admin 进行编辑,并且有一个管理员 class 注册。