【问题标题】:django 1.8.5 migrations fail for AbstractUser modelAbstractUser 模型的 django 1.8.5 迁移失败
【发布时间】:2015-11-04 13:13:01
【问题描述】:

将项目从 django 1.7.4 迁移到 1.8.5 时遇到一个奇怪的问题

在我的项目中,我像这样扩展基本用户模型:

应用用户:

class User(AbstractUser):
    age = models.IntegerField()

    def __unicode__(self):
        return self.username

现在由于某些原因在 django 1.8.5 中迁移时,我必须从做开始

python manage.py makemigrations

这将为用户应用程序进行迁移。

如果我这样做了

 python manage.py migrate

在此之后直接失败并出现此错误

django.db.utils.ProgrammingError: relation "users_user" does not exist

然后我做:

python manage.py migrate users

失败了

"Error creating new content types. Please make sure contenttypes "
RuntimeError: Error creating new content types. Please make sure 
contenttypes is migrated before trying to migrate apps individually.

有趣的是,即使这失败了,现在正在运行

python manage.py migrate

作品

Operations to perform:
  Synchronize unmigrated apps: messages, staticfiles, django_extensions, allauth, avatar, crispy_forms, debug_toolbar
  Apply all migrations: sessions, users, contenttypes, admin, sites, account, auth, socialaccount
Synchronizing apps without migrations:
  Creating tables...
    Creating table avatar_avatar
    Running deferred SQL...
  Installing custom SQL...
Running migrations:
  Rendering model states... DONE
  Applying account.0001_initial... OK
  Applying account.0002_email_max_length... OK
  Applying admin.0001_initial... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying sessions.0001_initial... OK
  Applying sites.0001_initial... OK
  Applying sites.0002_set_site_domain_and_name... OK
  Applying sites.0003_auto_20151104_1309... OK
  Applying socialaccount.0001_initial... OK

在从较旧的 django 版本迁移到 1.8 时,有没有人遇到过同样的问题?

【问题讨论】:

    标签: python django migration


    【解决方案1】:

    在尝试单独迁移应用程序之前迁移内容类型。

    您需要做的就是添加依赖项,以便您的迁移按顺序运行。

    查看django.contrib.contenttypes.migrations,将最新的作为依赖项添加到account.migrations 中,它应该可以正常工作。

    【讨论】:

    • 谢谢你说的很到位。但是现在我得到另一个错误“关系 django_site 不存在”。但这解决了我所问的问题。我将不得不调查另一个
    • 祝你好运 :) - 我认为要查看的内容是:缺少的应用程序(contrib.something?),任何执行一些时髦的代码检查/模型加载的应用程序(如 django 调试工具栏)和再次依赖。
    猜你喜欢
    • 2018-06-12
    • 2017-04-23
    • 2020-05-29
    • 2017-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-09
    相关资源
    最近更新 更多