python - 如何防止 Django 1.11 为非托管模型创建迁移?
问题描述
我有一个带有非托管模型的 Django 1.11.10 项目,例如:
class MyModel(models.Model):
id = models.PositiveIntegerField(primary_key=True)
name = models.CharField(max_length=500)
class Meta:
managed = False
该模型包装了一个自定义 SQL 视图。但是,当我运行时manage.py makemigrations
,我发现 Django 尝试生成一个迁移,为这个模型创建一个传统的 SQL 表。
在过去的 Django 版本中,正如这个问题所示,managed = False
用于防止这种情况发生。这不再是真的了吗?如何让 Django 不忽略模型上的模式更改?
解决方案
在迁移文件中,您可以看到选项更多信息可以在这里找到)
options={
'managed': False,
},
这意味着不要创建表格,正如@soon 所说,您可以继续查看sqlmigrate
,以及类似这样的内容
$ ./manage.py sqlmigrate YOUR_APP_NAME MIGRATION_NUMBER
BEGIN;
--
-- Create model MyModel
--
COMMIT
没有创建真正的表,但是 django 需要迁移来控制模型的变化。
为了排除冲突,当 Django 进行迁移时,它不是从当前模型文件中获取模型描述,而是从 migrtaions 文件夹中的文件逐步恢复它。
推荐阅读
- python - 如何处理python中的空输入
- javascript - 是否可以修改作为参数传递给类的方法
- python - 行级操作有时仅在 Numpy 中有效
- php - 我正在尝试检查用户是管理员还是标准用户
- ruby-on-rails - 获取 3 级深度的数据
- java - 如何为每个不同的片段设置动作栏
- excel - Excel - IF 函数如何在不同的单元格中返回多个值?
- python - 当 Kivy 应用程序在 Android 上停止时,logcat 输出无信息
- c++ - 虚幻文档中的教程项目中的错误
- python-3.x - 损失正在减少,但是 keras 神经网络模型的准确性也在减少