Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Django CMS将Django升级到1.5-用户模型问题_Django_Upgrade_Django Cms_User Profile - Fatal编程技术网

使用Django CMS将Django升级到1.5-用户模型问题

使用Django CMS将Django升级到1.5-用户模型问题,django,upgrade,django-cms,user-profile,Django,Upgrade,Django Cms,User Profile,我刚刚将一个站点从Django CMS 2.3.5迁移到Django 1.4下的2.4.1(使用Stackoverflow) 我现在正在升级到Django 1.5,这很难,因为我需要将旧的单独用户配置文件更新为新的自定义用户模型。我遵循了很好的说明,还将所有对User的引用替换为settings.AUTH\u User\u MODEL 不幸的是,Django CMS的模型显然仍然引用用户,但是:当我键入manage.py runserver时,我得到以下错误: CommandError: One

我刚刚将一个站点从Django CMS 2.3.5迁移到Django 1.4下的2.4.1(使用Stackoverflow)

我现在正在升级到Django 1.5,这很难,因为我需要将旧的单独用户配置文件更新为新的自定义用户模型。我遵循了很好的说明,还将所有对
User
的引用替换为
settings.AUTH\u User\u MODEL

不幸的是,Django CMS的模型显然仍然引用
用户
,但是:当我键入
manage.py runserver
时,我得到以下错误:

CommandError: One or more models did not validate:
cms.pagemoderatorstate: 'user' defines a relation with the model 'auth.User', which has been swapped out. Update the relation to point at settings.AUTH_USER_MODEL.
cms.globalpagepermission: 'user' defines a relation with the model 'auth.User', which has been swapped out. Update the relation to point at settings.AUTH_USER_MODEL.
cms.pagepermission: 'user' defines a relation with the model 'auth.User', which has been swapped out. Update the relation to point at settings.AUTH_USER_MODEL.
cms.pageuser: 'user_ptr' defines a relation with the model 'auth.User', which has been swapped out. Update the relation to point at settings.AUTH_USER_MODEL.
cms.pageuser: 'created_by' defines a relation with the model 'auth.User', which has been swapped out. Update the relation to point at settings.AUTH_USER_MODEL.
cms.pageusergroup: 'created_by' defines a relation with the model 'auth.User', which has been swapped out. Update the relation to point at settings.AUTH_USER_MODEL.
如何让Django CMS使用新的用户模型


谢谢

对于其他有这个问题的人,这里是我从中学到的总结

有四种可能的选择:

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

  • 就我而言,短期内我会选择#3,长期内选择#4。

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


    我没见过这个问题。我创建了一个类似的模型:来自django的CMS目前不支持AUTH_USER_模型。因此,我们能做什么呢?我不需要对用户配置文件设置进行任何更改就可以从Django 1.4升级到1.5。事实上,我对settings.py文件所做的唯一更改是添加了ALLOWED_HOSTS设置。(将Django CMS从2.3升级到2.4需要进行更多的更改,但同样,与用户配置文件无关。)谢谢!我现在走的是另一条路,但很高兴知道事情这么简单。
    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