【问题标题】:Django Custom Auth User Model and resetting MigrationsDjango 自定义身份验证用户模型和重置迁移
【发布时间】:2016-10-07 07:30:41
【问题描述】:

我正在尝试在我的设置中设置自定义 AUTH_USER_MODEL,但由于过去的一些迁移,它向我抛出了 CircularDependencyError。 (我之前用的是普通用户)

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

【问题讨论】:

    标签: django


    【解决方案1】:

    Django 警告不要更改 AUTH_USER_MODEL in the docs

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

    makemigrations 不支持在创建表后更改此设置,这将导致您必须手动修复架构、从旧用户表移植数据,并可能手动重新应用一些迁移。

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

    【讨论】:

    • 谢谢!我可以删除文件夹还是需要做其他事情。 (我记得以前在删除这样的迁移时遇到了一些麻烦)
    • 我将删除migrations 文件夹中除__init__.py 之外的所有文件。如果您删除整个迁移文件夹,我相信您必须运行 ./mange.py makemigrations <appname> 来为该应用创建初始迁移。
    【解决方案2】:

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

    【讨论】:

    • 谢谢。你确定吗?如何删除它?只是在每个应用程序级别删除或清空文件夹?我记得以前在删除这样的迁移时遇到了一些问题。我正在使用 1.8
    • 只需删除迁移文件夹中的文件(init.py 除外)。然后删除数据库迁移表中的条目。这样做是很安全的,特别是如果这是一个测试项目。你所做的只是删除 Django 的迁移历史。模型不变,下次运行时会创建新的历史记录 makemigrations
    【解决方案3】:

    正如我所说的here,只需删除文件浏览器中的迁移文件夹 db.sqlite3 文件(或您选择的任何数据库语言,都会有一个数据库-然后在您的项目目录中创建文件)。

    只有在您确定可以完全失去整个数据库并且需要重新开始所有迁移和数据输入的情况下才这样做。

    【讨论】:

      猜你喜欢
      • 2017-02-19
      • 2021-01-09
      • 1970-01-01
      • 2013-05-09
      • 1970-01-01
      • 1970-01-01
      • 2012-05-06
      • 1970-01-01
      • 2014-10-14
      相关资源
      最近更新 更多