将列添加到现有架构

时间:2015-06-19 18:09:56

标签: python django

我刚刚开始使用Django(1.8),我对如何修改模型感到有些困惑。

如果我进入并向现有模型添加新字段,我会开始收到“No Such Column”错误。到目前为止,我刚刚擦拭我的数据库并重新开始,但这很烦人,有没有这个过程?

我去制作时会发生什么?那时我该如何修改架构?我在网上看到的所有资源都是针对南方的,我猜这个资源已经内置到这个版本的django中,但仍然找不到任何可靠的信息。

由于

2 个答案:

答案 0 :(得分:2)

在django 1.7+中,不需要south。只有

python manage.py makemigrations
python manage.py migrate

如果您要从django 1.7-中的现有应用程序进行切换,那么您需要执行文档中列出的一个预步骤(我发现):

python manage.py makemigrations your_app_label

也试试这个

class Mymodel(models.Model):
    myfiled = models.CharField()
    # ...

    class Meta:
        managed = True

答案 1 :(得分:0)

您可以编写自己的sql命令来添加缺少的列,从而为您提供该错误。 第一次运行:

python manage.py makemigrations --empty yourappname

然后您可以转到您的应用并找到新生成的迁移文件 代码类似于下面的代码。

我不确定要添加的列类型,但在下面的代码中operations内,您可以输入sql命令。在我的例子中,我只是添加一个字符变化字段。

class Migration(migrations.Migration):

    dependencies = [
        ('app_name', '0002_auto_20150619_2439'),
    ]

    operations = [
        migrations.RunSQL('ALTER TABLE mytable ADD COLUMN mycolumn character varying(50) NOT NULL')
    ]

我希望这会有所帮助。