django - Django 不断制作旧的数据库模式
问题描述
我从我的模型中删除了一列。然后我删除了数据库、迁移文件、venv 目录和pycache。但是在执行 makemigrations 之后,旧的数据库模式正在生成(它仍然包含此列)。问题是什么。django 是如何知道这个专栏的。它不再存在于数据模型中。
解决方案
如果您没有在模型中定义主键列,Django 会自动创建一个主键列。这里解释:
默认情况下,Django 为每个模型提供以下字段:
id = models.AutoField(primary_key=True)
这是一个自动递增的主键。
如果您想指定自定义主键,请在其中一个字段上指定 primary_key=True。如果 Django 看到你明确设置了 Field.primary_key,它不会添加自动 id 列。
每个模型都需要一个字段来具有 primary_key=True(显式声明或自动添加)。
由于您碰巧使用相同的默认值显式声明它,因此您不会注意到任何差异。
推荐阅读
- sql-server - SQL CLR 中的 .Net Core 程序集
- scheme - 评估复合程序元循环“应用”的顺序
- apache-nifi - 在“ExtractText”调用的 Nifi 处理器“InvokeHttp”中,您在哪里编写 POST 请求的正文
- android - 调试 espresso 测试在“实例化测试...”处挂起并出现 Object.wait 错误
- python - Python (cpython) 在内存屏障和原子性等方面的行为是否得到保证?
- vue.js - 在 Vue 中观察数组的添加/删除
- reactjs - UnhandledPromiseRejectionWarning: MongoNetworkError: failed to connect to server
- sqlite - 如何在主页中使用提供程序实例化 Moor_Flutter 数据库(daos)?
- java - 如何安装hadoop纱线?
- r - R tidy 按组添加摘要