如何使用模型创建新表

Und*_*ble 0 python django django-migrations

所以我有这个django安装,其中有一堆迁移脚本.他们看起来像这样:

00001_initial.py
00002_blah_blah.py
00003_bleh_bleh.py
Run Code Online (Sandbox Code Playgroud)

现在我知道这些是"数据库构建"脚本,它将获取定义的内容models.py并对db运行它们以"创建"表和内容.

我想创建一个新表(所以我在models.py中创建了它的定义).为此,我复制了另一个模型类并编辑了它的名称和字段,一切都很好.让我们称这个新的模型类'繁荣'.

我现在的问题是如何使用迁移脚本和繁荣模型"创建"此繁荣表?

我担心我可能会意外地破坏已经存在于DB中的任何内容.如何运行迁移以仅创建热表?如何专门为其创建迁移脚本?

我知道它与某些事情有关manage.py并且正在运行migraterunmigration(或者是它sqlmigrate?...我很困惑).在创建繁荣表时,如果你知道我的意思,我不希望数据库出现繁荣

Rem*_*ich 8

首先,创建数据库的备份.将其复制到您的开发机器.尝试一下.这样,如果由于某种原因它确实"繁荣"并不重要.

首先要做的是

python manage.py showmigrations
Run Code Online (Sandbox Code Playgroud)

这显示了所有现有的迁移,并且应该显示它们已应用了[X].

然后,

python manage.py makemigrations
Run Code Online (Sandbox Code Playgroud)

为新模型创建新的迁移文件(名称00004 _...).

然后做

python manage.py migrate
Run Code Online (Sandbox Code Playgroud)

申请.要撤消它,请返回到迁移00003的状态

python manage.py migrate <yourappname> 00003
Run Code Online (Sandbox Code Playgroud)


wob*_*col 5

Django 中的迁移有两个步骤。

./manage.py makemigrations
Run Code Online (Sandbox Code Playgroud)

将创建您看到的迁移文件 - 这些文件描述了应对数据库进行的更改。

你还需要运行

./manage.py migrate 
Run Code Online (Sandbox Code Playgroud)

这将应用迁移并实际运行 SQL 中的 alter table 命令来更改实际的数据库结构。

一般来说,添加字段或表不会影响数据库中的任何其他内容。更改或删除现有字段时要更加小心,因为这可能会影响您的数据。

执行两个步骤的原因是,您可以在开发计算机上进行更改,并在满意后提交迁移文件并发布到生产环境。然后,在生产计算机上运行 migrate 命令,使生产数据库达到与开发计算机相同的状态(假设您的数据库启动相同,则无需在生产上进行 makemigrations)。