一個基本的非託管表
在使用 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>]