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

3

我刚将一个网站从Django-CMS 2.3.5迁移到了2.4.1(通过Stackoverflow的帮助),并运行在Django 1.4下。

现在我正在升级到Django 1.5,这很困难,因为我需要将旧的独立用户配置文件更新为新的自定义用户模型。我遵循了这里的优秀指导,并且用settings.AUTH_USER_MODEL替换了所有对User的引用。

不幸的是,Django-CMS的模型显然仍然引用User:当我输入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使用新的用户模型?
谢谢!

我没有看到这个问题。我创建了一个类似的问题:https://dev59.com/rXLYa4cB1Zd3GeqPVDk7 - Daviddd
django CMS目前不支持AUTH_USER_MODEL。那么我们该怎么办呢? - Daviddd
2个回答

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

谢谢!我现在已经走了不同的路线,但很高兴知道这很简单。 - Racing Tadpole

0

对于其他人有这个问题的,这是我从https://github.com/divio/django-cms/issues/1798了解到的总结。

有四种潜在选项:

  1. 如果您需要自定义用户名而不是User,则需要等待。
  2. 您可以将自定义用户模型称为User——尽管当我尝试时,我遇到了与相关m2m字段冲突的错误。上面的链接中有一些进一步的详细信息,可能有助于解决此问题。
  3. Django 1.5仍然可以使用用户档案。因此,如果您愿意使用弃用功能,可以使用用户档案而不是自定义用户模型来使用Django-CMS 2.4和Django 1.5。(在这里我误读了Django文档,并认为用户档案在Django 1.5中不受支持。)
  4. 通常情况下,您可以不使用用户档案或自定义用户模型-最好用它们添加特定于用户身份验证的数据。相反,您可以使用另一个具有与用户之间的一对一关系的模型,并使用反向关系进行访问。
在我的情况下,短期内我会选择#3,长期内我会选择#4。

我在从Django 1.4升级到1.5时不需要对用户配置文件进行任何更改。实际上,我对settings.py文件唯一的更改是添加ALLOWED_HOSTS设置。(将Django-CMS从2.3升级到2.4需要进行更多的更改,但同样与用户配置文件无关。) - Racing Tadpole

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接