历史模型在哪里?

时间:2017-12-30 08:37:33

标签: django model

The doc说:

  

当您运行迁移时,Django正在使用模型的历史版本存储在迁移文件中

但我无法在那里看到他们。我使用RunPython操作进行数据迁移,但也没有历史模型。可能是Django在飞行中生成它们吗?它是如何做到的?

虽然我们正在努力,但请确认一下我是否理解正确。历史模型是编写迁移时的模型吗?除了一些限制,比如没有自定义方法。

1 个答案:

答案 0 :(得分:1)

每当您创建模型并运行makemigrations时。 Django为该模型创建一个迁移文件,表示创建此类模型。

operations = [
    migrations.CreateModel(
        name='Book',
        fields=[
            ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
            ('name', models.CharField(max_length=50)),
        ],
    )
]

当您编辑该模型(如添加字段并再次运行makemigrations)时,会为该更改创建新的迁移文件。这是Django存储该模型的历史的方式。

operations = [
    migrations.AddField(
        model_name='book',
        name='author',
        field=models.CharField(blank=True, max_length=50, null=True),
    ),
]

迁移文件是历史模型。

现在,当您在迁移中添加一些带有RunPython的自定义Python代码时,它将成为未来迁移的历史背景的一部分。

迁移文件是一组需要在模型的数据库上完成的操作。他们没有像save()方法那样定制模型,因为这个模型是根据历史记录创建的,即迁移文件。