一尘不染

我可以在Django中将数据库视图用作模型吗?

django

就像许多答案所建议的一样,你可以在数据库中创建自己的视图,然后通过在models.py中定义它来在API中使用它。

一些警告:

  • manage.py syncdb将不再起作用
  • 视图的名称开头需要与所有其他模型(表)相同的事物,例如,如果你的应用程序被称为“事物”,则你的视图将需要被命名为Thing_ $ viewname

阅读 505

收藏
2020-03-31

共2个答案

一尘不染

从Django 1.1开始,你可以使用Options.managed。

对于较旧的版本,你可以轻松地为视图定义Model类,并像其他视图一样使用它。我刚刚使用基于Sqlite的应用程序对其进行了测试,并且看起来工作正常。如果你的视图的“主键”列未命名为“ id”,请确保添加主键字段;如果你的视图未命名为“ app_classname”,则请在“元”选项中指定该视图的名称。

唯一的问题是,由于Django将尝试创建表,因此“ syncdb”命令将引发异常。你可以通过在单独的Python文件(而不是models.py)中定义“视图模型”来防止这种情况。这样,Django在自检models.py以确定要为应用程序创建的模型时将看不到它们,因此不会尝试创建表。

2020-03-31
一尘不染

选项管理

默认为True,表示Django将在其中创建适当的数据库表syncdb并将其作为reset管理命令的一部分删除。也就是说,Django 管理数据库表的生命周期。

如果为False,则不会对此模型执行数据库表创建或删除操作。如果模型表示通过其他某种方式创建的现有表或数据库视图,则此功能很有用。这是唯一的区别时managedFalse。模型处理的所有其他方面与正常情况完全相同。

2020-03-31