就像许多答案所建议的一样,你可以在数据库中创建自己的视图,然后通过在models.py中定义它来在API中使用它。
一些警告:
从Django 1.1开始,你可以使用Options.managed。
对于较旧的版本,你可以轻松地为视图定义Model类,并像其他视图一样使用它。我刚刚使用基于Sqlite的应用程序对其进行了测试,并且看起来工作正常。如果你的视图的“主键”列未命名为“ id”,请确保添加主键字段;如果你的视图未命名为“ app_classname”,则请在“元”选项中指定该视图的名称。
唯一的问题是,由于Django将尝试创建表,因此“ syncdb”命令将引发异常。你可以通过在单独的Python文件(而不是models.py)中定义“视图模型”来防止这种情况。这样,Django在自检models.py以确定要为应用程序创建的模型时将看不到它们,因此不会尝试创建表。
选项管理
默认为True,表示Django将在其中创建适当的数据库表syncdb并将其作为reset管理命令的一部分删除。也就是说,Django 管理数据库表的生命周期。
True
syncdb
reset
如果为False,则不会对此模型执行数据库表创建或删除操作。如果模型表示通过其他某种方式创建的现有表或数据库视图,则此功能很有用。这是唯一的区别时managed是False。模型处理的所有其他方面与正常情况完全相同。
False
managed