标签: django-south

django south fresh install - >错误:未知命令'schemamigration'

短篇故事

./manage.py schemamigration junk_app --initial刚刚安装完南(http://south.aeracode.org/)之后就运行了一个全新的django项目,我收到以下错误:

Unknown command: 'schemamigration'
Type 'manage.py help' for usage.
Run Code Online (Sandbox Code Playgroud)

编辑:我有版本.7(南/ init.py版本 =".07")

很长的故事

下面几乎是刚刚发生的文字复制/粘贴:

$ sudo apt-get install python-django-south
$ django-admin.py startproject junk_proj
$ cd junk_proj
$ ./managy.py startapp junk_app
$ vim settings.py #add 'south' to INSTALLED_APPS
Run Code Online (Sandbox Code Playgroud)

.

$ cat settings.py
# Django settings for junk_proj project.

DEBUG = True
TEMPLATE_DEBUG = DEBUG

ADMINS = (
    # ('Your Name', 'your_email@domain.com'),
)

MANAGERS = ADMINS

import os
CWD = os.getcwd()
DATABASE_ENGINE …
Run Code Online (Sandbox Code Playgroud)

django django-south

17
推荐指数
2
解决办法
2万
查看次数

为什么在初期开发期间使用South?

我想知道在项目的初期开发过程中使用(django)South的优势.

在开发的早期阶段,通常会有快速的模型更改,频繁的分支和合并(特别是如果您使用像git-flow这样的开发策略)和非常少的存储数据(如果有的话).为什么要保留这些初始模型更改?有什么优点/缺点?

我认为,在激活South并执行初始迁移之前,更容易等到开发阶段结束(并且您有实际想要保留的数据).有可能吗?你想要那样做吗?

django django-models django-south

17
推荐指数
1
解决办法
2008
查看次数

Django - 将ForeignKey关系更改为OneToOne

我正在使用我的Django应用程序.我有两个模型,我正在改变与ForeignKey关系的OneToOneField关系.当我在我的dev数据库上运行此迁移时,它运行正常.当迁移作为创建测试数据库的一部分运行时,最新的迁移失败,出现MySQL 1005错误:"无法创建表mydb.#sql-3249_1d(错误号:121)".做一些谷歌搜索显示,这通常是尝试添加与现有约束具有相同名称的约束的问题.它失败的迁移中的特定行是:

关系改变自:

class MyModel(models.Model):
    othermodel = models.ForeignKey(OtherModel)
Run Code Online (Sandbox Code Playgroud)

class MyModel(models.Model):
    othermodel = models.OneToOneField(OtherModel)
Run Code Online (Sandbox Code Playgroud)

在迁移中生成以下语句:

db.alter_column('myapp_mymodel', 'othermodel_id', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['myapp.OtherModel'], unique=True))

db.create_unique('myapp_mymodel', ['othermodel_id'])
Run Code Online (Sandbox Code Playgroud)

但是create_unique,它没有在alter_column通话中失败,而是在通话失败.我运行以下命令来查看正在生成的SQL:

python manage.py migrate myapp 0010 --db-dry-run --verbosity=2
Run Code Online (Sandbox Code Playgroud)

它打印出来了

myapp:0010_auto__chg_field_mymodel_othermodel__add_unique_mymodel
   = ALTER TABLE `myapp_mymodel` ADD CONSTRAINT `myapp_mymodel_othermodel_id_uniq` UNIQUE (`othermodel_id`) []
   = SET FOREIGN_KEY_CHECKS=1; []
   = ALTER TABLE `myapp_mymodel` ADD CONSTRAINT `myapp_mymodel_othermodel_id_uniq` UNIQUE (`othermodel_id`) []
Run Code Online (Sandbox Code Playgroud)

它试图运行ADD CONSTRAINT两次似乎很奇怪,但是如果我删除了db.create_unique调用,当我运行它时没有生成SQL ,但是如果我真的运行它--db-dry-run仍然会得到错误.

我在这里不知所措,任何帮助表示赞赏.

python mysql django django-south

17
推荐指数
2
解决办法
4473
查看次数

django生产的数据库迁移

对于在非平凡的生产环境中拥有django应用程序的人,您如何处理数据库迁移?我知道有south,但如果涉及任何实质性的事情,似乎会错过很多.

另外两个选项(我能想到或已经使用过)是在测试数据库上进行更改,然后(使用应用程序脱机)并导入该sql导出.或者,也许是一个风险更高的选择,实时对生产数据库进行必要的更改,如果出现任何问题,还原为备份.

您通常如何处理数据库迁移和架构更改?

python mysql migration django django-south

17
推荐指数
1
解决办法
7684
查看次数

在django中将数据从"多对多"迁移到"多对多通"

我有一个模特

class Category(models.Model):
    title           = models.CharField(...)
    entry           = models.ManyToManyField(Entry,null=True,blank=True,
                                             related_name='category_entries',
                                             )
Run Code Online (Sandbox Code Playgroud)

我希望重构每个关系的附加数据:

class Category(models.Model):
    title           = models.CharField(...)
    entry           = models.ManyToManyField(Entry,null=True,blank=True,
                                             related_name='category_entries',
                                             through='CategoryEntry',
                                             )
Run Code Online (Sandbox Code Playgroud)

但是南方删除了现有的表格.我如何保留现有的mtm关系?

django django-models django-south

17
推荐指数
3
解决办法
4894
查看次数

数据已经存在于数据库中后添加了UUID字段.有没有办法为现有数据填充UUID字段?

我已经为我的一些模型添加了一个UUID字段,然后与South一起迁移.我创建的任何新对象都正确填充了UUID字段.但是,我所有旧数据的UUID字段都为空.

有没有办法为现有数据填充UUID数据?

python django django-models django-south

17
推荐指数
2
解决办法
3263
查看次数

南:为唯一且不为空的列运行迁移

使用South/Django,我遇到了一个问题,我正在尝试为数据库中现有行的模型添加一个UNIQUENOT NULL列.South提示我为列指定默认值,因为它是NOT NULL.但是,因为它也有一个UNIQUE限制,我无法在默认models.py添加到外地,我也可以指定一个一次性的价值,因为它会在所有行相同.

我能想到的解决这个问题的唯一方法是先创建一个空的列,应用迁移,运行一个脚本来填充该列中唯一值的现有行,然后添加其他移民到加UNIQUE约束的列.

但有没有更好的方法来完成同样的事情?

python django django-models django-south

16
推荐指数
1
解决办法
2197
查看次数

用pycharm使用south的新手难度 - DatabaseError:没有这样的表:south_migrationhistory

我正在使用sqlite3和pycharm来了解有关django的更多信息,并且谷歌搜索发现南方建议在创建模型后更容易修改模型.

我正在尝试遵循http://south.aeracode.org/docs/tutorial/part1.html#starting-off上的建议.

到目前为止,我最成功的是创建一个简单的模型并在向south_apps添加南之前运行syncdb.这样就创建了初始表,我有机会创建一个超级用户.(如果没有用户,Django管理员似乎会担心).

然后我将south添加到installed_apps,并运行django_manage.py schemamigration书签--initial

它似乎工作正常.创建一个名为migrations的新目录,其中包含我的app文件夹中的几个文件以及一条令人鼓舞的消息."已创建0001_initial.py.您现在可以将此迁移应用于:./ manage.py迁移书签"

下一步 - django_manage.py"迁移书签会生成以下错误消息:django.db.utils.DatabaseError:没有这样的表:south_migrationhistory.

我认为该表将在第一个schememigration步骤中创建.我错过了什么?有人可以帮忙吗?

玛格

django django-south pycharm

15
推荐指数
2
解决办法
1万
查看次数

Django south:在数据迁移中改变字段类型

我是从更改字段CharFieldIntegerField.字段名称保持不变.新创建的字段将基于旧字段.例如,如果旧字段是"L",则它将具有数字"1".我怎样才能在forwards()功能中实现这一目标?

django django-south

15
推荐指数
1
解决办法
4722
查看次数

从django.db导入模型,迁移ImportError:无法导入名称迁移

所以我开始在我的Django Web服务器上遇到南方的一些问题.每次使用此输出迁移命令失败:

from django.db import models, migrations

ImportError: cannot import name migrations 
Run Code Online (Sandbox Code Playgroud)

(在此之上,错误显示无法迁移的文件的路径)

我的Django版本是1.5.1,而我的南版本是0.8.4

让我最烦恼的是模块django.db.migrations无处可寻.

有任何想法吗?

python django migrate django-south

15
推荐指数
1
解决办法
1万
查看次数

标签 统计

django ×10

django-south ×10

python ×5

django-models ×4

mysql ×2

migrate ×1

migration ×1

pycharm ×1