django管理站点上的数据库视图

时间:2013-10-23 18:23:18

标签: python sql django django-models django-admin

我从几天开始学习django。我有几个模型,这些完美地显示在管理网站上,一旦我在admin.py中注册模型。但是我想创建database view(而不是django引用的view),我已经为models创建了视图模型,并在models.py上创建了managed = False。此数据库视图是两个表的连接。当我启动我的服务器时,我得到错误一些说我的数据库视图不是一个表,这是正确的。但我在这里遗漏了一些我无法解决的问题。可能是我错过了什么。或者我对数据库视图本身的整体想法是错误的,如果是这样我怎么做 - 它是否需要,我必须运行sql(当然使用django db api)。

继承我的代码。

class product(models.Model):
    users = models.ForeignKey(User)
    product = models.CharField(max_length=20)

     def __unicode__(self):
         return self.product


class product_models(models.Model):
     product = models.ForeignKey('product')
     model_name = models.CharField(max_length=50)
     model_price = models.IntegerField(max_length=4)
     model_desc = models.TextField(blank=True)
     commision = models.IntegerField(max_length=3)
     def __unicode__(self):
         return self.model_name   

class my summary_view(model.Model):
# this is my database view
    product = models.ForeignKey('product')
    model_name = models.ForeignKey('product_models')


    class meta :
          managed = False

"""
I am assuming this is what above code does, I may be wrong also here in creating
database view in the above table . 

Create View `summary_view` as 
Select
    p.product, m.model_name
From
    products p , product_model m. 
"""

1 个答案:

答案 0 :(得分:0)

您的视图称为summary_view,但django默认会查找appname_summary_view:

添加

class meta:
  db_table = 'summary_view'
  managed = False

或更新您的观点

create view 'appname_summary_view'...