首页 > 解决方案 > Django 不断制作旧的数据库模式

问题描述

我从我的模型中删除了一列。然后我删除了数据库、迁移文件、venv 目录和pycache。但是在执行 makemigrations 之后,旧的数据库模式正在生成(它仍然包含此列)。问题是什么。django 是如何知道这个专栏的。它不再存在于数据模型中。

标签: djangomodel

解决方案


如果您没有在模型中定义主键列,Django 会自动创建一个主键列。这里解释

默认情况下,Django 为每个模型提供以下字段:

id = models.AutoField(primary_key=True)

这是一个自动递增的主键。

如果您想指定自定义主键,请在其中一个字段上指定 primary_key=True。如果 Django 看到你明确设置了 Field.primary_key,它不会添加自动 id 列。

每个模型都需要一个字段来具有 primary_key=True(显式声明或自动添加)。

由于您碰巧使用相同的默认值显式声明它,因此您不会注意到任何差异。


推荐阅读