如何执行表示现有表或数据库视图的模型?

时间:2015-04-10 11:48:41

标签: python django django-models

我尝试从django创建数据库视图,而不是从现有数据库表中关联模型。我是django世界的新手,我不知道我该怎么做。任何人有任何想法从哪里开始寻求解决这个问题?也许这是不可能的,但你能看到任何替代解决方案吗?

我理解如何定义一个没有管理的模型,考虑managed=False,就像我在django docs上找到的那样,但是如何在我的模型类中创建自定义的SQL视图?

类似的东西:

Class myModel(models.Model):

   Object = models.raw("CREATE VIEW foo AS SELECT * FROM table.A")
   class Meta:   
    db_table = 'myview\".\"mymodeltable'
    managed = False

2 个答案:

答案 0 :(得分:0)

使用inspectdb管理命令,您可以从现有表中获取模型定义。为此,您需要配置 settings.py 文件以访问要使用的数据库,然后执行以下操作:

python manage.py inspectdb > models.py

您会看到它还会自动设置managed=False。从那时起,您可以开始使用典型的objects.all(), objects.filter()和这些东西来查询其对象

  

注意:不要忘记将导入模型的应用添加到 settings.py 文件的INSTALLED_APPS变量中。

答案 1 :(得分:0)

不幸的是,这可能是DjangoDocs

上的最终答案
  

如果模型表示通过其他方式创建的现有表或数据库视图,这将非常有用。