2016-06-07 61 views
1

我想在我的设置中设置自定义的AUTH_USER_MODEL,但由于过去的某些迁移而引发CircularDependencyError。 (我之前用过普通用户)Django自定义验证用户模型和重置迁移

我该如何解决这个问题?我不关心数据库,它只是一个单一的测试对象。但是,我可以重置/删除迁移,还是需要启动一个全新的项目?

回答

0

Django的警告反对改变AUTH_USER_MODELin the docs

更改AUTH_USER_MODEL对你的数据库结构有很大的影响。它会更改可用的表,并会影响外键和多对多关系的构造。如果您打算设置AUTH_USER_MODEL,则应在创建任何迁移或运行manage.py首次迁移之前对其进行设置。

创建表之后更改此设置不受makemigrations支持,并且将导致您不得不手动修复您的模式,从旧用户表中移植数据,并且可能需要手动重新应用某些迁移。

如果您不关心数据库,那么我会尝试删除数据库,删除现有的迁移文件并再次运行makemigrations

+0

谢谢!我可以删除文件夹还是需要做其他任何事情? (我记得在删除这样的迁移时遇到了一些麻烦) – user3199840

+0

Im使用Django 1.8 .. – user3199840

+1

我会删除'__init __。py'之外的'migrations'文件夹中的所有文件。如果您删除整个迁移文件夹,我相信您必须运行'./mange.py makemigrations '来为该应用程序创建初始迁移。 – Alasdair

0

只需删除数据库中的迁移文件和条目,即可轻松删除迁移。然后,您可以再次迁移以创建您的“第一次”迁移。

+0

谢谢。你确定吗?我如何删除它?只需删除或清空每个应用程序级别的文件夹?我记得之前在移除这种迁移时遇到了一些问题。我正在使用1.8 – user3199840

+1

只需删除migrations文件夹中的文件(除了__init__.py)。然后删除数据库的迁移表中的条目。这样做是相当安全的,特别是如果这是一个测试项目。你所做的只是删除Django的迁移历史。模型保持不变,下次运行'makemigrations'时会创建一个新的历史记录 – Alex