问题标签 [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.
python - Django 1.7 - 具有自定义应用标签的模型发现和应用配置
我目前正在使用Django==1.7.1
. 我有一些具有相同模块名称的可重用应用程序。这也使模型的应用程序标签相同。这实际上是矛盾的。您不能INSTALLED_APPS
在settings
文件中的不同库中使用两个具有相同名称的模块。
我通过AppConfig
为模块添加一个并更改它们的标签(app_label)来解决冲突来解决这个问题;
现在,我可以将这些应用程序配置添加到我的INSTALLED_APPS
而不是模块中。冲突刚刚解决。在那之前一切都很好。
这是我的问题;当我覆盖 的标签时AppConfig
,我在该模块中的模型不会被Django
. 当我跑步时;
似乎什么都没有改变。尽管我删除了所有迁移文件,但它甚至没有创建初始文件。我认为,它没有看到模型。每当我从我的应用程序配置中删除覆盖的标签字段时,模型就会再次被发现。所以,不要认为我的模型位置是错误的。
这也可能是错误,我不知道。但是,如果我做错了什么,那会是什么?
谢谢!
django - Django 1.7 删除字段。为模型指定的未知字段(字段)
我的应用程序中已经有很多模型。我已经在我的项目中使用了迁移。
但是当我想从模型中删除一个字段时,makemigration 命令会显示:
其中 (fields) 等于字段的名称,而 Model 是模型的名称?
您有解决此问题的方法吗?
django - ImportError:无法在 python-social-auth 中导入名称迁移
我正在使用 django==1.6。我安装了 python-social-auth 用于社交身份验证。但是当我尝试迁移数据库时,我收到了这个错误。
我尝试安装旧版本的 python-social-auth 但仍然存在此错误。我应该怎么做才能解决这个问题。帮助将不胜感激。
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
,我没有任何数据库路由器。
django - 如何使用 Django 1.7 迁移将现有的 django 模型迁移到 django-ordered-model?
我有一个现有的模型,我想让它可以订购django-ordered-model
,我选择它是因为它与django.contrib.admin
.
现在该模型由 订购pk
,我想保留该订购。当我运行manage.py makemigrations
时它问我:
这两种选择似乎都是错误的。我应该怎么办?
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 的缺点是丢失了迁移历史记录,这是一个可能想要保留的东西。
django - Django 1.8 OperationalError:没有这样的列
我只是想在模型上添加一个字段。
当我尝试迁移时:
删除并再次迁移并尝试 sqlmigrate
仍然说
谢谢
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 项目并且我没有失效?您能否帮助进行汇报以了解此错误的含义以及如何解决?
非常感谢。
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
,我会有同样的行为。
django - 使用已填充的模型添加非空和唯一字段
我的应用程序中有一个模型在服务器中运行,其中包含一些条目。我需要SlugField
为这个模型添加一个唯一且非空的。将SlugField
基于 填充trading_name
。我更改了模型以添加这个新字段并修改了保存方法:
更改模型后,我运行manage.py makemigrations
并将此迁移作为输出:
我无法运行manage.py migrate
,因为由于唯一的约束,默认值不起作用。
我的问题是:我怎样才能用 Django 1.7 做到这一点?我需要应用架构更改并将当前条目保留在我的数据库中。