2013-07-15 133 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看到擴展的答案 –