如何在 'makemigrations' 命令后对数据库应用一项特定更改?

How to apply one specific change to database after 'makemigrations' command?

我在我的一个模型中添加了一个字段,但在 'models' 文件夹中我有另外两个 python 文件,它们只有视图模型,我从中查询数据库中的视图。当我 运行 makemigrations 命令时,创建的新迁移文件还包括将这些视图模型作为 tables 添加到我的数据库中(我不想这样做)。我怎样才能忽略这些更改,并且只将一个字段添加到数据库上的实际 table。

我想我可能必须删除新迁移文件中的 migrations.CreateModel... 并且只保留 migrations.addField... ,然后是 运行 'migrate' 命令。我没有继续这样做,因为我不确定,也许它会以某种方式弄乱我的数据库。

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

当您为数据库视图创建模型时,您必须像这样添加元 class 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