问题标签 [django-migrations]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2226 浏览

python - Django 1.7 - 具有自定义应用标签的模型发现和应用配置

我目前正在使用Django==1.7.1. 我有一些具有相同模块名称的可重用应用程序。这也使模型的应用程序标签相同。这实际上是矛盾的。您不能INSTALLED_APPSsettings文件中的不同库中使用两个具有相同名称的模块。

我通过AppConfig为模块添加一个并更改它们的标签(app_label)来解决冲突来解决这个问题;

现在,我可以将这些应用程序配置添加到我的INSTALLED_APPS而不是模块中。冲突刚刚解决。在那之前一切都很好。

这是我的问题;当我覆盖 的标签时AppConfig,我在该模块中的模型不会被Django. 当我跑步时;

似乎什么都没有改变。尽管我删除了所有迁移文件,但它甚至没有创建初始文件。我认为,它没有看到模型。每当我从我的应用程序配置中删除覆盖的标签字段时,模型就会再次被发现。所以,不要认为我的模型位置是错误的。

这也可能是错误,我不知道。但是,如果我做错了什么,那会是什么?

谢谢!

0 投票
1 回答
647 浏览

django - Django 1.7 删除字段。为模型指定的未知字段(字段)

我的应用程序中已经有很多模型。我已经在我的项目中使用了迁移。

但是当我想从模型中删除一个字段时,makemigration 命令会显示:

其中 (fields) 等于字段的名称,而 Model 是模型的名称?

您有解决此问题的方法吗?

0 投票
1 回答
2300 浏览

django - ImportError:无法在 python-social-auth 中导入名称迁移

我正在使用 django==1.6。我安装了 python-social-auth 用于社交身份验证。但是当我尝试迁移数据库时,我收到了这个错误。

我尝试安装旧版本的 python-social-auth 但仍然存在此错误。我应该怎么做才能解决这个问题。帮助将不胜感激。

0 投票
2 回答
625 浏览

python - 将 Django 迁移添加到 django 项目的最佳方法

我有一个最初为 1.6 版创建的 Django 应用程序,我刚刚完成了最后一个版本的升级。所有的模型都有managed = False,之前没有一个是由南管理的,现在我想开始使用 Django 迁移 1.7 版本。

哪种方法是最好的和无缝的?恐怕只是更改managed = True所有模型并运行manage.py makemigrations会在迁移文件和数据库中造成混乱。

谢谢

编辑

正如建议的那样,我运行了 manage.py makemigrations。它使用一些模型定义创建脚本0001_initial,但不是为模型包中的所有对象创建脚本。它创建了 11 个表,但我有 19 个表。所有型号都有managed = True,我没有任何数据库路由器。

0 投票
2 回答
518 浏览

django - 如何使用 Django 1.7 迁移将现有的 django 模型迁移到 django-ordered-model?

我有一个现有的模型,我想让它可以订购django-ordered-model,我选择它是因为它与django.contrib.admin.

现在该模型由 订购pk,我想保留该订购。当我运行manage.py makemigrations时它问我:

这两种选择似乎都是错误的。我应该怎么办?

0 投票
2 回答
414 浏览

django - Django 1.7 + Django CMS - 从我的仓库中删除迁移文件或在仓库中包含 virtualenv?

我正在使用 git 对 Django 1.7 + Django CMS 3.0.6 项目进行版本控制。

在构建各种应用程序等的过程中,我最终得到了很多迁移文件。迁移文件当前包含在我的 git 存储库中。

到目前为止,我一直试图避免将虚拟 env 文件直接包含在我的 repo 中,因为它看起来相当混乱和多余。相反,到目前为止,我一直在 repo 中包含一个 pip 需求文件,并在需要时使用它来重新创建虚拟环境。

但是,我最近发现选择在 repo 中包含迁移文件似乎也需要在 repo 中包含所有虚拟 env 文件。我这样说是因为在将我的项目部署到生产服务器并尝试通过 python manage.py 运行任何 db 命令(syncdb、makemigrations 或 migrate)时,我收到错误:

而即使在删除数据库之后,我的本地计算机上也不会发生此类错误。

我跟踪了这​​个错误的根源,因为我的本地机器上的虚拟环境引用了“0004_auto_20141108_1256”(在 django-cms 包内 - 似乎一些 cms 迁移信息直接记录在虚拟环境目录本身内)而生产环境则没有 - 因为生产 venv 是通过 pip 需求文件创建的。因此,即使所有第三方库都相同,这两个虚拟环境也不完全匹配。目前我没有在我的 git repo 中包含 venv。

所以在我看来,我有两个选择:

哪个选项更好,为什么 - 或者是否有第三种更好的方法?

#1 的缺点是不必要的膨胀。选项 #2 的缺点是丢失了迁移历史记录,这是一个可能想要保留的东西。

0 投票
2 回答
1346 浏览

django - Django 1.8 OperationalError:没有这样的列

我只是想在模型上添加一个字段。

当我尝试迁移时:

删除并再次迁移并尝试 sqlmigrate

仍然说

谢谢

0 投票
1 回答
2215 浏览

django - heroku - DatabaseError:关系“south_migrationhistory”不存在

我购买了一项外包服务,以便在 django 中开发一个网站,以部署在 heroku 和 AWS S3(boto 包)中。不幸的是,尽管被问到,开发人员没有评论代码,并且没有完成项目以跟进更大的客户。我聘请了另一位 django “专家”来修复未开发的部分,他想(过度)收取部署测试费用,我认为这对于良好实践来说应该是正常的事情!我正在制定自己的预算,需要自己解决。

我能够使项目在本地运行,并使自己成为尚未完全开发的前端模板,但是在我自己的暂存环境中部署代码时遇到了问题。

我在我的凭证下设置了一个暂存环境,以检查一切是否正常,然后再投入生产。

不过,我想我差不多到了:

在控制台中生成:

DatabaseError:关系“south_migrationhistory”不存在第 1 行:...gration”,“south_migrationhistory”。“applied” FROM “south_mig...

在浏览器中:

我检查了我的设置,它们看起来还不错:我检查了 AWS S3 存储桶,它能够在那里写入;heroku 控制台中的设置显示数据库已创建。

我跟着: Heroku 创建了表,但是当我迁移时,他说没有创建

但看起来我的 locals.py 也可以,并且在我的本地 git 分支中 .gitignore 将排除 db.sqlite

我的 git 和 heroku ssh 密钥已生成并添加,所以我不认为这是身份验证问题。

我如何检查数据库是否正确连接到 django 项目并且我没有失效?您能否帮助进行汇报以了解此错误的含义以及如何解决?

非常感谢。

0 投票
5 回答
3690 浏览

python - Django 1.7 makemigrations 冻结/挂起

我终于从 Django 1.6 升级到 1.7,并在此过程中删除了 South。我遵循了官方的 Django 说明并删除了我所有的旧编号迁移。现在我正在尝试运行python manage.py makemigrations以使新的迁移继续使用 1.7 的迁移模块,但它完全挂起,我得到的唯一输出如下:

然后即使我离开它几个小时,也没有任何反应。

这里发生了什么?如何调试 manage.py 命令?

更新:

dtruss按照@WilfredHughes的建议运行后,我得到以下输出(顶部的输出已被剪裁,因为对于 StackOverflow 来说太长了):

更新: 根据下面的评论和答案,我尝试完全关闭并重新启动 Postgres 以确保没有打开的连接,并且makemigrations仍然挂起。但是,我确实注意到,如果我让 Postgres 完全关闭(通过尝试$ psql并没有得到响应来确认),然后再尝试makemigrations,我会有同样的行为。

0 投票
2 回答
9043 浏览

django - 使用已填充的模型添加非空和唯一字段

我的应用程序中有一个模型在服务器中运行,其中包含一些条目。我需要SlugField为这个模型添加一个唯一且非空的。将SlugField基于 填充trading_name。我更改了模型以添加这个新字段并修改了保存方法:

更改模型后,我运行manage.py makemigrations并将此迁移作为输出:

我无法运行manage.py migrate,因为由于唯一的约束,默认值不起作用。

我的问题是:我怎样才能用 Django 1.7 做到这一点?我需要应用架构更改并将当前条目保留在我的数据库中。