django的1.5扩展缺省用户模型或代替它(django 1.5 extend the defau

2019-09-04 00:46发布

ENV:Django的1.5.1 + Django的CMS 2.4.1 +百日最新+我的自定义应用程序+自定义Django的CMS插件

基本上我可以扩展Django缺省(1.5.X)用户模型等的Django Ribbit的教程上NETTUTS +

要么

替代完全定制的模型等的Django开发文档或Django2Scoops例中的段:“处理的用户模型”

为了测试我决定了子类AbstractUser从Django2Scoops书:“选择这个选项,如果你喜欢Django的用户模型字段会是这样的,但需要额外..fields。”

但是,我有以下错误:

notification.noticesetting:“用户”定义了与模型“auth.User”,它已经被换出的关系。 更新的关系在settings.AUTH_USER_MODEL点。 cmsplugin_zinnia.latestentriesplugin:“作者的定义与模式“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/了解详情。

但我不明白,我怎么能解决这个问题。

我需要什么:

-Users链接到研究院级(一个研究所 - >更多的用户)

- 用户或机构可以有不同的权限,看到不同的Django CMS页/插件。

-Several更多领域的用户。

是子类AbstractUser正确的点?

我怎样才能解决“换出”的错误?

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

不推荐使用此代码?

谢谢!

Answer 1:

有非常简单的解决方案。 只需要导入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 


Answer 2:

这是我在进一步讨论的总结https://github.com/divio/django-cms/issues/1798 。

有四个可能的选项:

  1. 如果您需要自定义用户模式,具有比其他的用户名,你需要等待。
  2. 您可以调用自定义用户模型User -尽管当我尝试这样做,我得到了与相关M2M领域的冲突错误。 有上面的链接可以帮助解决这个的一些进一步的细节。
  3. Django的1.5还允许您使用用户配置文件。 所以,如果你确定与使用弃用的功能,你仍然可以使用Django-CMS 2.4和1.5的Django与用户配置文件,而不是一个自定义的用户模型。 (我这里误读Django文档,以为用户配置文件没有在Django 1.5的支持。)
  4. 你经常可以逃脱既没有用户配置文件或自定义的用户模型 - 他们是最适合用来专门添加的数据进行用户认证。 相反,你可以使用另一种模式有一个一对一关系到User ,并使用反向关系来访问它。

对于我而言,我会去与#3在短期和#4中的长期运行。

希望帮助!



文章来源: django 1.5 extend the default User model or substitute it