问题标签 [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.
django - django 1.7 中的 django south 内部数据库函数
我有一个项目正在使用以下内部 db 命令,South
并且想知道是否有人知道如何在django 1.7
的新迁移中执行相同操作。
谢谢
python - Django 1.7 - makemigrations 未检测到更改
正如标题所说,我似乎无法让迁移工作。
该应用程序最初低于 1.6,所以我知道迁移最初不会存在,事实上,如果我运行,python manage.py migrate
我会得到:
如果我对 中的任何模型进行更改myapp
,它仍然按预期显示未迁移。
但如果我跑步,python manage.py makemigrations myapp
我会得到:
我运行命令的内容或方式似乎无关紧要,它永远不会检测到应用程序有更改,也不会向应用程序添加任何迁移文件。
有没有办法强制应用程序迁移并基本上说“这是我的工作基地”或其他什么?还是我错过了什么?
如果有帮助的话,我的数据库是 PostgreSQL 数据库。
python - Django Polls 教程在应用程序投票中未检测到更改
我正在阅读 Django Polls 教程,我正在尝试命令“python manage.py makemigrations polls”,但我不断收到消息“在应用程序'polls'中没有检测到更改”
我不明白我做错了什么,或者我怎么能做不同的事情,或者这个信息甚至意味着什么。
为清楚起见编辑:
我希望有点像教程上的打印输出:
然后在本教程的后面,当它要求我输入命令python manage.py sqlmigrate polls 0001
时,我会得到某种打印输出,就像所示的那样(相当长)。我正在学习https://docs.djangoproject.com/en/1.7/intro/tutorial01/上的教程
相反,我得到
python - 用于重命名模型和关系字段的 Django 迁移策略
我计划在现有 Django 项目中重命名多个模型,其中有许多其他模型与我要重命名的模型具有外键关系。我相当肯定这将需要多次迁移,但我不确定确切的过程。
假设我从名为 Django 应用程序中的以下模型开始myapp
:
我想重命名Foo
模型,因为该名称实际上没有意义,并且会导致代码混乱,并且Bar
会使名称更清晰。
根据我在 Django 开发文档中阅读的内容,我假设以下迁移策略:
第1步
修改models.py
:
请注意,AnotherModel
字段名称foo
不会更改,但关系会更新为Bar
模型。我的理由是我不应该一次更改太多,如果我将此字段名称更改为,bar
我可能会丢失该列中的数据。
第2步
创建一个空迁移:
第 3 步
编辑Migration
步骤 2 中创建的迁移文件中的类,将操作添加RenameModel
到操作列表中:
第4步
应用迁移:
第 5 步
编辑相关字段名称models.py
:
第 6 步
创建另一个空迁移:
第 7 步
编辑Migration
步骤 6 中创建的迁移文件中的类,将RenameField
任何相关字段名称的操作添加到操作列表中:
第 8 步
应用第二次迁移:
除了更新其余代码(视图、表单等)以反映新的变量名称之外,这基本上是新迁移功能的工作方式吗?
此外,这似乎有很多步骤。迁移操作可以以某种方式压缩吗?
谢谢!
django - Django中的'schemamigrate'和'schemamigrate'有什么区别?
我对Django
(1.6)还很陌生South
,在谷歌搜索“django south migration”时,我遇到了一些提到该任务的图表schemamigrate
。
我只熟悉这个schemamigration
任务。
那么Django 中的schemamigrate
和有什么区别呢?schemamigration
django - 在 Django 1.7 中运行单元测试时禁用迁移
Django 1.7引入了数据库迁移。
在 Django 1.7 中运行单元测试时,它会强制执行migrate,这需要很长时间。所以我想跳过 django 迁移,并在最终状态下创建数据库。
我知道忽略迁移可能是一种不好的做法,因为这部分代码不会被测试。但事实并非如此:我正在 CI 测试服务器 (jenkins) 中运行完整的迁移。我只想跳过本地测试中的迁移,其中速度很重要。
一些上下文:
在 Django 1.6之前,使用 South 时,我使用了SOUTH_TESTS_MIGRATE设置:
默认情况下,如果 South 的 syncdb 命令在非交互模式下运行,它也会应用迁移,其中包括运行测试时 - 每次运行测试时它都会运行每个迁移。
如果您希望测试运行程序使用 syncdb 而不是 migrate - 例如,如果您的迁移花费的时间太长而无法应用 - 只需在 settings.py 中设置 SOUTH_TESTS_MIGRATE = False。
但是,syncdb不再存在,现在它是migrate。
从 Django 1.8开始,我将使用--keepdb参数:
--keepdb 选项可用于在测试运行之间保留测试数据库。这具有跳过创建和销毁操作的优点,这大大减少了运行测试的时间,尤其是大型测试套件中的测试。如果测试数据库不存在,它将在第一次运行时创建,然后为每次后续运行保留。在运行测试套件之前,任何未应用的迁移也将应用于测试数据库。
所以这个问题仅限于 Django 1.7。
django - 在 Django 1.7c2 中运行迁移时出现循环依赖错误
我一直在https://docs.djangoproject.com/en/1.7/topics/migrations/阅读有关 django 迁移的信息。我还查看了 github 中 1.7.x 分支上的提交,我知道这个问题可能已经解决。不幸的是,我在运行迁移时仍然遇到错误。--fake 选项给出了相同的错误。
我有以下迁移:
“人”应用迁移:
“位置”应用迁移:
现在我运行迁移
这是我得到的错误
完整的错误可以在以下位置查看: http: //pastebin.com/jixK6Ve2
我的问题是 django 代码中是否还有需要修复的内容,请参阅固定票:https ://code.djangoproject.com/ticket/22932 。如果没有,是否可以选择将迁移拆分为 2 个或更多步骤以避免循环依赖错误?
python - 如何从 Django 1.7 中的初始迁移迁移回来?
我用一些模型创建了一个新的应用程序,现在我注意到有些模型没有经过深思熟虑。由于我还没有提交代码,因此明智的做法是将数据库迁移到最后的良好状态并使用更好的模型重做迁移。在这种情况下,最后一个良好状态是新应用程序不存在的数据库。
如何从 Django 1.7 中的初始迁移迁移回来?
在South
一个可以做:
这<app>
将从迁移历史记录中清除并删除所有<app>
.
如何使用 Django 1.7 迁移来做到这一点?
python - 测试中的模型 - Django 1.7 问题
我正在尝试移植我的项目以使用 Django 1.7。一切都很好,除了 1 件事。测试文件夹中的模型。
Django 1.7 新迁移在内部运行 migrate 命令。在运行 syncdb 之前。这意味着如果模型不包含在迁移中 - 它不会填充到数据库(也不会填充到测试数据库)。这正是我现在正在经历的。
我要做的是:
在我的/app/tests/models.py
我有虚拟模型:class TestBaseImage(BaseImage): pass
它所做的只是从抽象 BaseImage
模型继承。
然后在测试中我创建该虚拟模型的实例来测试它。
问题是它不再起作用了。它不包含在迁移中(这很明显,因为我不想将我的测试模型保留在生产数据库中)。运行我的测试会导致数据库错误说table does not exist
。这是有道理的,因为它不包含在迁移中。
有没有办法让它与新的迁移系统一起工作?我找不到“修复”它的方法。
我使用的代码:
应用程序/测试/models.py
应用程序/模型.py
工厂:
示例测试:
django - 在 Django 1.7 迁移之前运行 South 迁移的推荐方法是什么?
我有一些项目有很多南迁移,包括包含大量需要以特定顺序运行的自定义 SQL 的项目。升级到 Django 1.7 后,这是关于如何将项目转换为使用 South 的建议(来自Django 文档):
如果您已经使用 South 创建了预先存在的迁移,那么使用 django.db.migrations 的升级过程非常简单:
- 确保所有安装都与它们的迁移完全同步。
- 从 INSTALLED_APPS 中删除“南”。
- 删除所有(编号的)迁移文件,但不删除目录或
__init__.py
- 确保也删除 .pyc 文件。- 运行 python manage.py makemigrations。Django 应该看到空的迁移目录并以新格式进行新的初始迁移。
- 运行 python manage.py 迁移。Django 将看到初始迁移的表已经存在,并将它们标记为已应用而不运行它们。
简而言之,“擦除你现有的迁移,Django 会处理剩下的”。
这里没有提到的是,当现有的 South 迁移不仅包含模型更改,而是包含需要按顺序运行的直接 SQL、数据迁移等时该怎么办。在这种情况下,自动生成的 Django 迁移会遗漏很多东西,因为并非所有这些更改都通过自检模型文件显而易见。
理想情况下,可以使用 South 运行现有的迁移,然后让 Django 迁移接管。解决此问题的最佳方法可能是什么?如果这不可能或非常不推荐,那么最好的选择是什么?