在“ makemigrations”命令后如何将一项特定更改应用于数据库?

时间:2019-06-19 06:34:21

标签: django django-migrations

我在一个模型中添加了一个字段,但是在“ models”文件夹中,我还有另外两个python文件,这些文件只有View模型,可以从中查询数据库中的视图。当我运行makemigrations命令时,创建的新迁移文件还包括将这些视图模型作为表添加到我的数据库中(我不想这样做)。我该如何忽略这些更改,而仅将一个字段的一个附加内容提交到数据库中的实际表中。

我认为我可能必须删除新迁移文件中的migrations.CreateModel...并仅保留migrations.addField...,然后运行'migrate'命令。我没有进行此操作,因为我不确定,也许它将以某种方式破坏我的数据库。

在此先感谢任何可以提供帮助的人。

1 个答案:

答案 0 :(得分:2)

在为数据库视图建立模型时,必须添加元类Managed = false和db_table,如下所示:

class MyViewModel(models.Model):
    field: models.CharField(max_length=100)

    class Meta:
         managed = False
         db_table = 'database_view_name'

编写并运行makemigrations时,生成的迁移包含此模型,但运行迁移时,此迁移不会更改数据库上的任何内容。

您还可以使用python中的迁移来创建视图。有关更多详细信息,请参见migrations.RunPython