我正在做一些系统,我的表设计是这样的:
Table A:
- ID
- ForeignKey(C)
Table B:
- ID
- ForeignKey(A)
Table C:
- ID
Run Code Online (Sandbox Code Playgroud)
由于一些需求变化,我需要将ForeignKey(C)从A移动到B,所以它是这样的:
Table A:
- ID
Table B:
- ID
- ForeignKey(A)
- ForeignKey(C)
-Table C:
- ID
Run Code Online (Sandbox Code Playgroud)
模式迁移很简单.但是上次我已经在表A中有一些现有的FK数据.我不能马上删除它.我需要将这个FK迁移到表B.B的结构和它的内部数据是不同的.当我将ForeignKey(C)添加到B的模型时,South要求我提供默认值,因为我没有提供任何默认值,并且它不允许NULL.选择是退出schemamigration并手动添加默认值或提供一次性值.
我的问题是,如何使用South?添加从表A中的现有数据导入的默认/ 1时间值.我正在寻找这个类似的问题,但没有运气:(
谢谢.
我正在尝试使用South迁移我的Django应用程序并且正在获得权限被拒绝警告.我虽然以root身份登录(我知道,风险很大,只是试图设置好东西).为什么这会被拒绝?
root@Harold:~/OmniCloud/omnicloud: ./manage.py convert_to_south OmniCloud_App
-bash: ./manage.py: Permission denied
Run Code Online (Sandbox Code Playgroud) 我已经和django + south一起工作了一段时间,仍然没有把这个问题钉死.
使用现有应用程序和随时间添加的现有迁移来获取现有项目.现在假设您要将其部署到具有干净数据库的新开发机器(例如).
这个过程会是什么?
请记住,此时的设置包含:
INSTALLED_APPS = (
'django.contrib.auth',
# ...
'south',
'myapp1',
'myapp2',
)
Run Code Online (Sandbox Code Playgroud)
因此,一方面,如果您尝试运行迁移,则由于尚未存在数据库,因此您将无法获得任何内容.但是,如果你试图syncdb它只是在没有南迁移的情况下进行同步.
那么这样做的正确过程是什么?
我有一个模型:
class Thing(models.Model):
title = models.CharField(_('Title'), max_length=255)
Run Code Online (Sandbox Code Playgroud)
我想添加这个NOT NULL字段:
slug = models.SlugField(_('Slug'), max_length=255)
Run Code Online (Sandbox Code Playgroud)
当我运行"python manage.py schemamigration things --auto"时,系统会提示我为我的一次性默认值输入Python代码.
我应该在这里输入什么来小写和迷恋现有的游戏?在运行"迁移"之前,我还有什么与迁移有关的事情吗?
我正在使用Django与MySQL和South,而且一切都很花哨......直到迁移出现问题.然后我收到一个错误,经常损坏或破坏我的数据库,并且沿着这条线给我:
! Since you have a database that does not support running
! schema-altering statements in transactions, we have had
! to leave it in an interim state between migrations.
Run Code Online (Sandbox Code Playgroud)
我的所有数据库表都是InnoDB,据我所知,它支持事务.我需要做些什么才能让South将交易用于其迁移?
django是否包含没有南方应用程序的迁移概念?
如果没有,为什么不将它包含在Django 1.4中呢?[因为,它必须有]
请帮忙..
我遇到了数据迁移的问题,并且真的希望我可以在问题点上放置一个断点并检查对象.有没有办法通过PyCharm实现这一目标?
如果没有,有没有其他方法来实现这一目标?
如果没有,调试南迁移的最佳方法是什么?
我想创建一个表,然后创建一个应插入该表的数据列表.南方是否有能力做这样的事情?如果是这样,你有没有参考,告诉我如何做到这一点?
我希望能够做到这一点,因为在这一点上,似乎拥有"完全"相同数据的唯一方法是自己手动将它们插入数据库.
我想要一些在桌子中插入行的"好"自动方式.
我的一个模型有一个字段定义了一个PositiveSmallIntegerField.在描述表格时,我已经看到它被定义为INTEGER.
我想存储更大范围的值,因此我修改了我的模型以使用PositiveIntegerField.
现在当我运行South来生成迁移时,它说模型中没有任何变化?我可以清楚地看到我的变化但南方忽略了这一点.为什么?
将使用Postgres中PositiveIntegerField的BIGINT字段吗?Django是否支持BIGINTPostgres领域?
我的项目使用第三方应用程序,不使用南方进行迁移.我们写了一个数据迁移,这取决于那个3d-party应用程序,因此我们的测试现在失败了.
所以我想自定义我们的测试运行器,假冒某些迁移,但我找不到正确的地方或函数来覆盖来调用虚假的迁移.
谁能指出我应该在哪里做?
django ×10
django-south ×10
python ×7
migration ×2
mysql ×2
insertion ×1
linux ×1
postgresql ×1
pycharm ×1
unix ×1