【发布时间】:2016-10-07 07:30:41
【问题描述】:
我正在尝试在我的设置中设置自定义 AUTH_USER_MODEL,但由于过去的一些迁移,它向我抛出了 CircularDependencyError。 (我之前用的是普通用户)
我该如何解决这个问题?我不关心数据库,它只是一个测试对象。但是我可以重置/删除迁移,还是需要开始一个全新的项目?
【问题讨论】:
标签: django
我正在尝试在我的设置中设置自定义 AUTH_USER_MODEL,但由于过去的一些迁移,它向我抛出了 CircularDependencyError。 (我之前用的是普通用户)
我该如何解决这个问题?我不关心数据库,它只是一个测试对象。但是我可以重置/删除迁移,还是需要开始一个全新的项目?
【问题讨论】:
标签: django
Django 警告不要更改 AUTH_USER_MODEL in the docs:
更改
AUTH_USER_MODEL对您的数据库结构有很大影响。它改变了可用的表,它会影响外键和多对多关系的构建。如果您打算设置AUTH_USER_MODEL,则应在创建任何迁移或首次运行manage.pymigrate 之前设置它。
makemigrations不支持在创建表后更改此设置,这将导致您必须手动修复架构、从旧用户表移植数据,并可能手动重新应用一些迁移。
如果您不关心数据库,那么我会尝试删除数据库,删除您现有的迁移文件并再次运行 makemigrations。
【讨论】:
migrations 文件夹中除__init__.py 之外的所有文件。如果您删除整个迁移文件夹,我相信您必须运行 ./mange.py makemigrations <appname> 来为该应用创建初始迁移。
您只需删除数据库中的迁移文件和条目即可轻松删除迁移。然后您可以再次迁移以创建您的“第一次”迁移。
【讨论】:
makemigrations
正如我所说的here,只需删除文件浏览器中的迁移文件夹和 db.sqlite3 文件(或您选择的任何数据库语言,都会有一个数据库-然后在您的项目目录中创建文件)。
只有在您确定可以完全失去整个数据库并且需要重新开始所有迁移和数据输入的情况下才这样做。
【讨论】: