2013-07-15 132 views
1

我需要在Django中使用3种模型(即WebQuery,WebReply和BusinessOwners)开发UNION查询,并且输出格式应如下所示。Django Union查询

{ 
    "(#conversation_id#)_(#b_id#)": { 
     "from": "(#user_id)", 
     "email": "(#user_email)", 
     "date_time": "#get from db", 
     "query": "are you open ?", 
     "from_r_id": "(#representative_id)", 
     "from_r_name": "(#rep_name)", 
     "business_registered": "FALSE" 
     "to_business_name": "CCD saket", 
     "chat": [{ 
      "direction": 1, 
      "text": "yes sir", 
      "date_time": "424 577" 
     }, { 
      "direction": 0, 
      "text": "ok", 
      "date_time": "424 577" 
     }] 
    }, 

我知道如何查询只涉及一个模型,但不知道联合查询。 这将如何实现?

+0

你能告诉我们你想要做的联合的后端代码吗?并向我们​​展示您迄今试过的代码 – karthikr

+0

@karthikr - 以下是我的models.py文件的链接。请审查并提供必要的帮助。谢谢:) [http://stackoverflow.com/questions/17651815/database-error-no-such-table-django/17653647?noredirect=1#17653647] – PythonEnthusiast

回答

0

我个人会说,如果这将是一个常见的查询,那么我会建议做一个SQL视图,然后查询。

W3Schools的有什么看法是一个非常简单的概述:http://www.w3schools.com/sql/sql_view.asp

在SQL中,视图是基于SQL语句的结果集的虚拟表。

这意味着你可以编写你所需的sql语句并使用它创建一个视图。然后创建一个django模型,它反映出您可以用来查询的视图。

所以,您将创建一个SQL视图:

CREATE VIEW view_name AS 
    SELECT a, b, c 
    FROM table_name 
    WHERE condition 

然后创建一个Django模型,其中有正常模式略有区别:

class view_name(models.Model): 
    class Meta: 
     # https://docs.djangoproject.com/en/1.5/ref/models/options/#django.db.models.Options.managed 
     managed = False 

    a = models.CharField(max_length) 
    .... 

managed = false>https://docs.djangoproject.com/en/1.5/ref/models/options/#django.db.models.Options.managed

然后,您可以使用正常的django orm语法来查询它

或者有类似的问题:

Previous stackoverflow question, union in django orm

How can I find the union of two Django querysets?

+0

我没有得到它。请给你一个更具体的。 谢谢。 – PythonEnthusiast

+0

@ user1162512看到扩展的答案 –