使用Django 1.7migrations.

我不小心在数据库中掉了一张表.我假设通过再次运行迁移,这将重新创建表,但Django表示"没有要应用的迁移".

如何让Django重新创建桌子?

我跑过:

> makemigrations - No changes detected
> migrate - No migrations to apply.

我try 对模型进行更改并运行新的迁移,它只是简单地声明"表'x.test_customer'不存在",这是正确的,但我希望它能重新创建表.

推荐答案

迁移判断模型中的差异,然后将其转换为操作,再转换为SQL.它does not自动将数据库方案与您的模型同步,并且它无法知道您删除了一个表(它不知道手动更改,因为您不应该进行手动更改.这就是问题所在)

答案是什么?手动更改需要a manual migration as well次.您需要做的只是编写您自己的迁移,然后手动告诉SOUTH重新构建表.这不是很难,The docs分就相当容易了.只要做这样的东西就行了:

from django.db import migrations, models

class Migration(migrations.Migration):

    operations = [
        migrations.CreateModel("Foo"),
        migrations.AddField("Foo", "bar", models.IntegerField(default=0))
    ] 

您可以查看第一个迁移文件(最初创建模型的文件),然后复制粘贴几乎所有文件.然后,您需要做的就是像往常一样运行迁移

Django相关问答推荐

如何在对接合成时创建两个Postgres数据库?

Django OneToOneFieldto抽象对象

如何在Django模板中为无效词典查找打开异常?

Django 中模型将数据存储在哪里?

ModuleNotFoundError:没有名为guardian.shortcuts的模块

来自日历的 Django 动态 url

root urls.py 是 Django 中的 config/urls.py 吗?

Django REST Framework 图片上传

所有子元素的Django自递归外键过滤器查询

何时在 django 中使用 pre_save、save、post_save?

Django REST Framework ModelSerializer get_or_create 功能

Django 相当于 COUNT 和 GROUP BY

Django App 配置不当 - 应用程序模块有多个文件系统位置

Django:使用render或render_to_response时添加响应头

Django:获取上次用户访问日期

has_object_permission 和 has_permission 有什么区别?

在 Django 中舍入小数点

如何从 Django 的 TabularInline 管理视图中省略对象名称?

如何使用或使用 Django 的模型过滤系统?

Heroku & Django:OSError: No such file or directory:'/app/{myappname}/static'