一個基本的非託管表

在使用 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>]