cod*_*ool 1 django django-models
在django模型中,我们有一个名为managed的选项,可以设置为True或False
根据文档,该选项的唯一区别是表是否将由django管理.django或我们的管理有什么不同吗?
使用一个选项而不是其他选项有什么优缺点吗?
我的意思是为什么我们选择managed = False.它会给出一些影响我代码的额外控制或权力吗?
Vin*_*mar 11
当我们创建 django 模型时,Managed=True默认情况下隐式为 true 。我们知道,当我们运行python manage.py makemigrations迁移文件(我们可以说是数据库视图)时,会在应用程序的迁移文件夹中创建并应用该迁移,即在数据库中创建表,或者我们可以说模式。
因此,通过Managed=False,我们限制 Django 创建该模型的表(方案,更新表的架构)或其在迁移文件中指定的字段。
我们为什么使用它?
case1:有时我们在项目中使用两个数据库,例如我们有 db1(默认)和 db2,因此我们不希望特定模型在 db1 中创建架构或表,因此我们可以这样做,或者我们可以自定义数据库视图。
案例2。在 django ORM 中,db 表与 django ORM 模型绑定,它有助于将数据库视图与 django ORM 模型绑定。
也可以通过链接:
我们可以在迁移文件中添加数据库视图的原始 sql。
迁移中的原始sql如下所示:在0001_initial.py中
从未来导入 unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.RunSQL(
CREATE OR REPLACE VIEW app_test AS
SELECT row_number() OVER () as id,
ci.user_id,
ci.company_id,
),
]
Run Code Online (Sandbox Code Playgroud)
上面的代码只是为了概述迁移文件的外观,可以通过上面的链接进行简要介绍。
直接来自Django docs:
managed=False如果模型表示通过其他某种方式创建的现有表或数据库视图,则此功能很有用。这是时的唯一区别managed=False。模型处理的所有其他方面与正常情况完全相同
| 归档时间: |
|
| 查看次数: |
5612 次 |
| 最近记录: |