一个基本的非托管表
在使用 Django 的某些时候,你可能会发现自己想要与已创建的表或数据库视图进行交互。在这些情况下,你不希望 Django 通过其迁移来管理表。要进行此设置,你只需要为模型的 Meta
类添加一个变量:managed = False
。
以下是如何创建非托管模型以与数据库视图交互的示例:
class Dummy(models.Model):
something = models.IntegerField()
class Meta:
managed = False
这可以映射到 SQL 中定义的视图,如下所示。
CREATE VIEW myapp_dummy AS
SELECT id, something FROM complicated_table
WHERE some_complicated_condition = True
创建此模型后,你可以像使用任何其他模型一样使用它:
>>> Dummy.objects.all()
[<Dummy: Dummy object>, <Dummy: Dummy object>, <Dummy: Dummy object>]
>>> Dummy.objects.filter(something=42)
[<Dummy: Dummy object>]