为什么 django dumpdata 不包含 django_migrations table?

Why doesn't django dumpdata include the django_migrations table?

Django dumpdata(未指定应用程序)将所有已安装应用程序的所有 table 转储到输出文件。我刚刚意识到这不包括 django_migrations table。我检查了其他 django tables,它们被包含在 INSTALLED_APPS 设置中,如下所示:

'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',

现在,我很好奇,为什么 django_migrations table 没有被丢弃。理由似乎是当您创建新数据库并迁移时,它将自动生成并填充数据。这个对吗?如果是这样,我的第二个问题是有没有办法将它也转储(作为备份)?我是 django 的新手,尝试新事物可能会破坏 table。有一个备份会很方便。

django_migrations table 存在于传统的 Django 机器之外,这可能就是它没有被包括在内的原因(根据@knbk)。

只要你备份了你的应用程序,就不需要备份迁移table。您可以删除所有应用 table 并重新迁移所有内容。当您这样做时,此时您可能还想通过使用 squash 命令或删除所有迁移并从头开始创建来压缩您的迁移。

请注意,django_migrations 不是唯一被排除的 table,django_site 也被排除在外(仅适用于使用 Django 的站点功能的情况)。

这意味着当您在迁移后恢复数据库时,请不要删除迁移为这两个 table 创建的数据。如果适用,您可能必须为 django_site 创建一个手动条目。

这些 table 很奇怪:

    'auth_group_permissions',
    'auth_permission',
    'auth_user',
    'django_content_type',

由转储数据和 migrate 创建。这意味着如果您转储数据,请准备好先截断上述 table,然后才能成功加载数据(或从转储数据命令中排除它们)。