使 django 项目文件夹的迁移不起作用

Posted

技术标签:

【中文标题】使 django 项目文件夹的迁移不起作用【英文标题】:making migrations for django project folder not working 【发布时间】:2018-01-21 09:02:39 【问题描述】:

我正在从现有数据库构建 Django 应用程序。现有数据库已全部设置完毕并按我的需要工作。

这个现有项目的模型自动放置在我的项目目录中。

以下是相关目录的大致思路:

    myProject
    | manage.py
    | myProject
    |  | models.py   <- auto generated models were placed here (also new models here)
    | app1
    |  | models.py
    |  | migrations

我认为我安装的所有应用都可以访问我的新模型,因此我在与自动生成的模型相同的 models.py 中包含了更多模型。

运行 makemigrations 似乎没有发现我所做的任何更改。 (我什至在已安装的应用程序中包含了“myProject”)

如何迁移这些更改?

【问题讨论】:

您的迁移文件夹中有__init__.py 吗? myProject/myProject 没有迁移文件夹 是的,它不应该有迁移文件夹。但是您必须检查您的 app1 目录是否有包含 __init__.py 的迁移文件夹 它确实有一个__init__.py 在 migrations 文件夹中创建一个__init__.py 文件,该文件应该是完全空的并尝试进行迁移和迁移 【参考方案1】:

您必须将__init__.py 添加到您的迁移文件夹以进行新的迁移。__init__.py 使您的迁移文件夹成为一个模块,因此 Django 可以识别它以进行新的迁移。

【讨论】:

【参考方案2】:

这是一个老问题,但只是为了完成:正如Django project models.py versus app models.py 和Django - makemigrations - No changes detected 中的回答,您不应该将模型放入您的项目应用程序中。它们应该分散在您使用它们的应用中。

【讨论】:

虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review

以上是关于使 django 项目文件夹的迁移不起作用的主要内容,如果未能解决你的问题,请参考以下文章

尽管单元测试正常运行,但 Authtoken 迁移不起作用

Django 模型字段可调用默认值不起作用

如果 AddField 引用“相同”列,则带有“--fake-initial”的 Django 迁移不起作用

鼠标悬停的背景移动的工作 Jsfiddle 示例在实际项目环境(Django)中不起作用?

为啥可选择的项目列表在 Django 中不起作用?

Laravel 5.2 工匠“迁移”不起作用