django重新创建掉落的桌子

时间:2017-07-11 12:39:42

标签: python django orm

我手动丢弃了一张桌子,因为在改变模型时我犯了一个非常糟糕的错误。所以无论如何......我怎样才能重新创造它?我试过了:

- Delete the migrate folder of that app
- delete from django_migrations where app='main'
- makemigrations main
- migrate main

但它停在第一桌。哪个是:-(在这种情况下我的表message没有重新创建。在0001_initial.py我的表格中有正确的条目

migrations.CreateModel(
        name='Message',
        fields=[
            ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
            ('created_at', models.DateTimeField(auto_now_add=True)),
            ('updated_at', models.DateTimeField(auto_now=True)),
            ('unread', models.BooleanField(default=True)),
            ('subject', models.CharField(max_length=120)),
            ('freetext', models.TextField(null=True)),
            ('from_user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='from_user', to=settings.AUTH_USER_MODEL)),
            ('to_user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='to_user', to=settings.AUTH_USER_MODEL)),
        ],
    ),

有没有办法手动启动?

2 个答案:

答案 0 :(得分:2)

我认为最好的方法是编写自己的迁移文件。

在迁移文件夹下,使用 DeleteModel 方法创建新的迁移文件。例如,如果您之前的迁移文件名是 '0065_auto_20210318_0000',那么您的文件可能是:

class Migration(migrations.Migration):

    dependencies = [
        ('my_app', '0065_auto_20210318_0000'),
    ]

    operations = [
        migrations.DeleteModel(
            name='MyModel',
        ),
    ]

答案 1 :(得分:1)

下次回滚时:

  1. 进入应用中的迁移文件夹。

  2. 查找要返回的迁移文件。 (例如0012_post_category.py)

  3. 进入终端写:./ manage.py迁移yourAppName 0012(这只是一个示例号)并点击回车

  4. 如果一切顺利的话。删除迁移文件夹中此号码后面的其他迁移。

  5. 不要只是删除迁移!希望有所帮助。