环境:Django 1.5.1 + Django CMS 2.4.1 + Zinnia最新+我的自定义应用+自定义Django CMS插件
基本上我可以扩展默认的Django(1.5.X)用户模型 比如Django Ribbit Tutorial on NetTuts+
或
在段落中替换完全自定义的模型,如Django Dev doc或Django2Scoops示例:“处理用户模型”
为了测试我决定使用Subclass AbstractUser 来自Django2Scoops的书:“如果您喜欢Django的用户模型字段,请选择此选项,但需要额外的..字段。”
但我有以下错误:
notification.noticesetting:'user'定义与模型的关系 'auth.User',已被换出。将关系更新为point 在settings.AUTH_USER_MODEL。 cmsplugin_zinnia.latestentriesplugin: 'authors'定义了与模型'auth.User'的关系,它具有 被换掉了。更新指向的关系 settings.AUTH_USER_MODEL。
cms.pageuser:'created_by'定义与模型的关系 'auth.User',已被换出。将关系更新为point 在settings.AUTH_USER_MODEL。 cms.pageusergroup:'created_by'定义了一个 与模型'auth.User'的关系,已被换出。 更新关系以指向settings.AUTH_USER_MODEL。
经过几个小时的阅读和测试后,我找到了
Specifying custom User model (extends AbstractUser) doesn't work
正如错误消息所示 - 您需要将关系更新为point 在settings.AUTH_USER_MODEL。第二个错误(“模型已被交换 out ...“)是你直接引用这一事实的副作用 用户模型。一旦你改变了ForieignKey引用,这第三个 错误会消失。我们已尽我们所能确保顺利进行 过渡到新的用户模型,但它不能完全 透明。应用编写者需要将他们的应用更新为1.5 兼容。从本质上讲,Django 1.4应用程序不会100%兼容 使用Django 1.5,如果它包含一个硬编码的外键引用 用户。拜托,你能给我更多例子吗?
Django/Python: Update the relation to point at 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 Code
的内容此代码是否已弃用?
谢谢!
答案 0 :(得分: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
答案 1 :(得分:1)
以下是https://github.com/divio/django-cms/issues/1798进一步讨论的摘要。
有四种可能的选择:
User
- 但是当我尝试这个时,我遇到了与相关m2m字段冲突的错误。上述链接有一些进一步的细节可能有助于解决这个问题。User
具有一对一关系的其他模型,并使用反向关系来访问它。对于我的情况,我将在短期内使用#3,在长期运行中使用#4。
希望有所帮助!