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

django 1.5扩展或替换默认用户模型,django,django-models,django-authentication,django-cms,django-users,Django,Django Models,Django Authentication,Django Cms,Django Users,Env:Django 1.5.1+Django CMS 2.4.1+Zinia最新版本+我的自定义应用程序+自定义Django CMS插件 基本上,我可以扩展默认的Django(1.5.X)用户模型 像 或 替换“处理用户模型”一段中完全定制的模型,如或Django2Scoops示例 为了测试,我决定使用AbstractUser子类 来自Django2Scoops书籍:“如果您喜欢Django的用户模型字段,但需要额外的..字段,请选择此选项。” 但我有以下错误: notification.no

Env:Django 1.5.1+Django CMS 2.4.1+Zinia最新版本+我的自定义应用程序+自定义Django CMS插件

基本上,我可以扩展默认的Django(1.5.X)用户模型 像

替换“处理用户模型”一段中完全定制的模型,如或Django2Scoops示例

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

但我有以下错误:

notification.noticesetting:“用户”定义了与模型的关系 “auth.User”,已被调出。更新与点的关系 在settings.AUTH_USER_MODEL上。cmsplugin_zinnia.latestentriesplugin: “authors”定义了与模型“auth.User”的关系,该模型具有 被调出。将关系更新为指向 settings.AUTH\u用户\u模型

cms.pageuser:“创建人”定义了与模型的关系 “auth.User”,已被调出。更新与点的关系 在settings.AUTH_USER_MODEL上。cms.pageusergroup:“创建人”定义了 与已被调出的模型“auth.User”的关系。 更新关系以指向settings.AUTH\u USER\u MODEL

经过几个小时的阅读和测试,我发现

正如错误消息所说——您需要更新与点的关系 在settings.AUTH_USER_MODEL上。第二个错误(“模型已交换 out…)是您直接引用的一个副作用 用户模型。一旦您更改了ForieignKey引用,第三个 错误会消失的。我们已尽一切努力确保会议顺利进行 过渡到新的用户模型,但不能完全 透明的。应用程序编写者需要将其应用程序更新为1.5 兼容的。实际上,Django 1.4应用程序并不是100%兼容的 如果Django 1.5包含对的硬编码外键引用 用户。请你再举几个例子好吗

在settings\u example.py中,您有AUTH\u USER\u MODEL='users.USER'。 但是,您使用的应用程序-menu.bookmark-与 django.contrib.auth.User-不能两者都有。背景 AUTH_USER_模型意味着您正在替换内置的Django用户 用你自己的模型。看见 详情请参阅

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

我需要的是:

-用户链接到Institutes类(一个机构->多个用户)

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

-还有几个字段供用户选择

子类AbstractUser正确吗

如何解决“调出”错误

我应该创造类似的东西

这段代码不是被弃用了吗


谢谢

以下是我对会议进一步讨论的总结

有四种可能的选择:

  • 如果您需要自定义用户模型的名称不是user,则需要等待
  • 您可以调用自定义用户模型
    user
    ——不过当我尝试此操作时,遇到了与相关m2m字段冲突的错误。以上链接中有一些详细信息可能有助于解决此问题
  • Django 1.5仍然允许您使用用户配置文件。因此,如果您同意使用不推荐使用的功能,您仍然可以在用户配置文件中使用Django CMS 2.4和Django 1.5,而不是自定义用户模型。(我在这里误读了Django文档,认为Django 1.5不支持用户配置文件。)
  • 您通常可以在没有用户配置文件或自定义用户模型的情况下离开—它们最好用于添加专门用于用户身份验证的数据。相反,您可以使用与
    用户具有一对一关系的另一个模型,并使用反向关系来访问它
  • 就我而言,短期内我会选择3,长期内我会选择4


    希望有帮助

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


    django CMS目前不支持AUTH_USER_模型。所以我能做什么呢?谢谢你,小蝌蚪!作为你,从长远来看,我将支持第三和第四条。文档不是很清楚,Dajngo2Scoops的书上写着“选项3:子类AbstractBaseUser”:AbstractBaseUser是一个简单的选项,带有:密码,最后一次登录,处于活动状态。1) 您不满意用户模型默认提供的字段,例如名字和姓氏。2) 您更喜欢从一个非常简单的列表中创建子类,但希望利用AbstractBaseUser sane默认方法来存储密码。
    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