Cer*_*rin 5 python django django-models django-migrations
我有一个Django 1.11.10项目,其中包含一个非托管模型:
class MyModel(models.Model):
id = models.PositiveIntegerField(primary_key=True)
name = models.CharField(max_length=500)
class Meta:
managed = False
Run Code Online (Sandbox Code Playgroud)
该模型包装自定义SQL视图.但是,当我运行时manage.py makemigrations,我发现Django尝试生成一个迁移,为该模型创建一个传统的SQL表.
在过去的Django版本中,正如这个问题所示,managed = False用于防止这种情况发生.这不再是真的吗?你如何让Django不忽略模型上的架构变化?
小智 4
在迁移文件中,您可以看到选项更多信息可以在此处找到)
options={
'managed': False,
},
Run Code Online (Sandbox Code Playgroud)
这意味着不要创建一个表,正如@soon所说,你可以查看sqlmigrate,以及类似的东西
$ ./manage.py sqlmigrate YOUR_APP_NAME MIGRATION_NUMBER
BEGIN;
--
-- Create model MyModel
--
COMMIT
Run Code Online (Sandbox Code Playgroud)
没有创建真正的表,但 django 需要迁移来控制模型的更改。
为了排除冲突,当 Django 进行迁移时,它不会从当前模型文件中获取模型描述,而是从 migrtaions 文件夹内的文件逐步恢复它。
| 归档时间: |
|
| 查看次数: |
626 次 |
| 最近记录: |