django 1.5扩展默认用户模型或替换它

Dav*_*ddd 3 django django-models django-authentication django-cms django-users

环境:Django 1.5.1 + Django CMS 2.4.1 + Zinnia最新+我的自定义应用+自定义Django CMS插件

基本上我可以扩展默认的Django(1.5.X)用户模型,如NetTuts +上的Django Ribbit Tutorial

要么

在段落中替换完全自定义的模型,如Django Dev doc或Django2Scoops示例:"处理用户模型"

为了测试我决定使用子类AbstractUser来自Django2Scoops书:"如果您喜欢Django的用户模型字段,请选择此选项,但需要额外的..fields."

但是我有以下错误:

notification.noticesetting:'user'定义了与模型'auth.User'的关系,该模型已被换出.更新关系以指向settings.AUTH_USER_MODEL.cmsplugin_zinnia.latestentriesplugin:'authors'定义了与模型'auth.User'的关系,该模型已被换出.更新关系以指向settings.AUTH_USER_MODEL.

cms.pageuser:'created_by'定义了与模型'auth.User'的关系,该模型已被换出.更新关系以指向settings.AUTH_USER_MODEL.cms.pageusergroup:'created_by'定义了与模型'auth.User'的关系,该模型已被换出.更新关系以指向settings.AUTH_USER_MODEL.

经过几个小时的阅读和测试,我找到了

指定自定义用户模型(扩展AbstractUser)不起作用

正如错误消息所示 - 您需要更新关系以指向settings.AUTH_USER_MODEL.第二个错误("模型已被换出......")是您直接引用用户模型这一事实的副作用.更改ForieignKey引用后,第三个错误将消失.我们已尽力确保顺利过渡到新的用户模型,但它不能完全透明.应用编写者需要将他们的应用更新为1.5兼容.基本上,如果Django 1.4应用程序包含对用户的硬编码外键引用,则它与Django 1.5不会100%兼容.拜托,你能举个更多例子吗?

Django/Python:更新关系以指向settings.AUTH_USER_MODEL

在settings_example.py中,您有AUTH_USER_MODEL ='users.User'.但是你使用的应用程序 - menu.bookmark--与django.contrib.auth.User有关 - 你不能同时拥有这两者.设置AUTH_USER_MODEL意味着您要用自己的内置Django用户模型替换它.有关 详细信息,请参见 http://procrastinatingdev.com/django/using-configurable-user-models-in-django-1-5/.

但我不明白我该怎么解决这个问题.

我需要什么:

- 用户与学院班级(一个学院 - >更多用户)相关联

- 用户或机构可以拥有不同的权限,并查看不同的django cms页面/插件.

- 用户的几个字段.

Subclass AbstractUser是正确的吗?

如何解决"换出"错误?

我应该创建类似于OpenTreeMap代码的东西

这个代码是不是已经弃用了?

谢谢!

Jel*_*aja 5

有非常简单的解决方案.只需在导入CMSPlugin之前注册您的自定义用户.例:

from django.db import models
from django.contrib.auth import models as auth_models
from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
  telephone = models.CharField(max_length=100)
  email = models.CharField(max_length=100)

auth_models.User = User

from cms.models import CMSPlugin
Run Code Online (Sandbox Code Playgroud)