环境:Django 1.5.1 Django CMS 2.4.1百日草最新我的自定义应用程序自定义Django CMS插件
基本上我可以扩展默认的Django(1.5.X)用户模型,如Django Ribbit Tutorial on NetTuts+
要么
在段落中替换完全自定义的模型,如Django Dev doc或Django2Scoops示例:"Dealing With the User Model"
为了测试我决定使用子类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 .
经过几个小时的阅读和测试,我找到了
Specifying custom User model (extends AbstractUser) doesn't work
正如错误消息所示 - 您需要更新关系以指向settings.AUTH_USER_MODEL . 第二个错误(“模型已被换出......”)是您直接引用用户模型这一事实的副作用 . 更改ForieignKey引用后,第三个错误将消失 . 我们已尽力确保顺利过渡到新的用户模型,但它不能完全透明 . 应用编写者需要将他们的应用更新为1.5兼容 . 基本上,如果Django 1.4应用程序包含对用户的硬编码外键引用,则它与Django 1.5不会100%兼容 . 拜托,你能举个更多例子吗?
和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/ .
但我不明白我该怎么解决这个问题 .
我需要什么:
-
用户与学院 class (一个学院 - >更多用户)相关联
-
用户或机构可以拥有不同的权限,并查看不同的django cms页面/插件 .
-
用户的几个字段 .
Subclass AbstractUser是正确的吗?
如何解决“换出”错误?
我应该创建类似OpenTreeMap Code的东西
这个代码是不是已经弃用了?
谢谢!
2 回答
有非常简单的解决方案 . 只需在导入CMSPlugin之前注册您的自定义用户 . 例:
class User(AbstractUser):
telephone = models.CharField(max_length = 100)
email = models.CharField(max_length = 100)
auth_models.User =用户
从cms.models导入CMSPlugin
以下是我在https://github.com/divio/django-cms/issues/1798进一步讨论的摘要 .
有四种可能的选择:
如果您需要自定义用户模型的名称不是User,则需要等待 .
您可以调用自定义用户模型
User
- 但是当我尝试这个时,我遇到了与相关m2m字段冲突的错误 . 上述链接有一些进一步的细节可能有助于解决这个问题 .Django 1.5仍允许您使用用户配置文件 . 因此,如果您可以使用已弃用的功能,您仍然可以将Django-CMS 2.4和Django 1.5与用户配置文件一起使用,而不是使用自定义用户模型 . (我在这里误读了Django文档,并认为Django 1.5不支持用户配置文件 . )
您通常可以在没有用户配置文件或自定义用户模型的情况下离开 - 它们最适合用于添加专门用于用户身份验证的数据 . 相反,您可以使用与
User
具有一对一关系的另一个模型,并使用反向关系来访问它 .对于我的情况,我将在短期内使用#3,在长期运行中使用#4 .
希望有所帮助!