Django CMS 3.1和Django 1.7.8自定义用户模型

时间:2015-05-12 19:15:35

标签: python django django-cms

我正在使用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',
)

2 个答案:

答案 0 :(得分:1)

您无法将abstract model设置为AUTH_USER_MODEL。 基本上抽象模型还不是一个具体的模型。您需要一个具体的User模型。这也解释了为什么你的Model 'users.UserProfile' is not registered

此外,您的UserProfile有些奇怪,可能会被称为UserMyUserWhateverUser。 Django有一个历史原因,UserProfile命名约定总是通过User引用OneToOneField模型的附加信息。 See this Django 1.4 (old docs)

See this to you can create a custom user model.

答案 1 :(得分:1)

必须在INSTALLED_APPS中的cms之前加载定义模型的应用程序。您需要在CMS之前将'users'移到列表中。

此外,DjangoCMS期望用户模型至少具有以下字段:

  • 电子邮件
  • 密码
  • IS_ACTIVE
  • is_staff
  • is_superuser

此外,它应该继承自AbstractBaseUser和PermissionsMixin(或AbstractUser),并且必须将一个字段定义为USERNAME_FIELD(有关详细信息,请参阅Django文档)并定义get_fullname()方法。

模型也必须可以通过django admin进行编辑并注册管理类。