【问题标题】:database view on django admin sitedjango 管理站点上的数据库视图
【发布时间】: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


【解决方案1】:

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

添加

class meta:
  db_table = 'summary_view'
  managed = False

或者更新你的观点

create view 'appname_summary_view'...

【讨论】:

  • 你的答案有点奏效。谢谢,但我不想插入数据,只是查看数据库中已经存在的数据。我还能从这里做些什么。我做了manage.py sqlall。这实际上使用create table 而不是create view 创建了表。
  • 我认为 django 默认不支持 ORM 中的视图概念。其他一些堆栈跟踪帖子讨论了使用保存和删除方法:stackoverflow.com/questions/12158463/…
  • 我也不知道你最终要达到什么目标,你的观点本身看起来有点局限。您的观点是否比您发布的更多?
  • 我发布的只是我想要的样本,我的数据库有很多列,我的观点是更多列。但除此之外,我的视图方法是否正确,我的意思是我应该首先在此处创建视图,还是在请求到来时运行查询。
  • 这里有一篇关于查询与查看的好帖子stackoverflow.com/questions/10302615/mysql-views-performance/…(我个人对视图没有很好的经验,只在需要的地方使用连接)
猜你喜欢
  • 2020-03-04
  • 2011-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-16
  • 2011-09-23
  • 1970-01-01
  • 2020-07-22
相关资源
最近更新 更多