在测试期间更改 Django 迁移应用程序的顺序

Posted

技术标签:

【中文标题】在测试期间更改 Django 迁移应用程序的顺序【英文标题】:Change the order in which Django migrate app during testing 【发布时间】:2015-06-30 04:28:17 【问题描述】:

我正在使用从 AbstractBaseUser 类继承的自定义用户模型。当我尝试在 makemigrations 命令后迁移时

django.db.utils.ProgrammingError: 关系“custom_user_users”不存在

发生这种情况是因为 Django 尝试首先迁移依赖于自定义用户模型的其他应用程序。即使我尝试更改包含 INSTALLED_APP 中自定义用户模型的应用程序的顺序,但没有运气。

我知道我可以先强制完全迁移 custom_user 模型,然后让 Django 迁移所有其他模型。这解决了问题,但是在运行测试期间它会按照 Django 决定的顺序运行迁移。

如何更改测试期间迁移应用的顺序?有没有其他方法可以解决这个依赖问题?

我正在使用 Django 1.8

【问题讨论】:

你看过docs.djangoproject.com/en/1.8/topics/migrations/#dependencies。对我来说,它似乎在讨论这个确切的问题。 我已经查看了链接。并且认为这就是问题所在。但是我应该如何解决呢?有什么方法可以决定在测试命令期间应用程序迁移的顺序? 以下答案帮助了我(在测试中禁用迁移)***.com/questions/25161425/… 【参考方案1】:

在 settings.py 文件中的 INSTALLED_APP 中将您的应用放在 Django 应用之前

【讨论】:

【参考方案2】:

https://pypi.python.org/pypi/django-test-without-migrations 将 --nomigrations 标志添加到 manage.py 测试。像魅力一样工作。

【讨论】:

以上是关于在测试期间更改 Django 迁移应用程序的顺序的主要内容,如果未能解决你的问题,请参考以下文章

如何在托管 = False 的 Django 测试期间创建表?

迁移期间的 Django NodeNotFoundError

Django 抽象模型 + DB 迁移:测试抛出“无法更改表,因为它有待处理的触发事件”

迁移回滚期间无法从其他应用导入 Django 模型

属性名称更改期间的 CoreData 迁移问题

迁移期间的 Django 问题 - 懒惰的参考