【发布时间】:2013-11-02 04:33:32
【问题描述】:
我这几天一直在学习 django。我有几个模型,一旦我在 admin.py 中注册模型,这些模型就会完美地显示在管理站点上。但我想创建database view(不是django 所指的view),我已经为视图创建了模型,在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.
"""
【问题讨论】:
-
向我们展示您的代码!!如果我们无法判断你做对了什么,那么理论上的解释就是无稽之谈
-
@yuvi 我已经添加了代码。
-
我不明白你想要做什么。它应该是动态模型的基础吗?或者summery应该是一个中介模型?我真的很困惑。你的模型究竟是怎样的一个视图?这是两个完全不同的概念!
-
@yuv我添加了更多代码。
-
是的,您需要通过其中一种方法使数据库中的视图名称和 Django 查找的名称匹配。
标签: python sql django django-models django-admin