2013-07-15 2 views
1

Мне нужно разработать запрос UNION в Django с 3-мя моделями, а именно WebQuery, WebReply и BusinessOwners, а выход должен быть представлен ниже.Django Union Query

{ 
    "(#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 View, а затем запросить это.

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 

Затем создать модель Джанго, которая имеет небольшое значение для нормальной модели:

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

или есть подобные вопросы:

Previous stackoverflow question, union in django orm

How can I find the union of two Django querysets?

+0

Я не получаю его. Можете ли вы быть более конкретным. Спасибо. – PythonEnthusiast

+0

@ user1162512 см. Расширенный ответ –

0

How can I find the union of two Django querysets? обеспечивает пример объединения с использованием '|' оператор. Я не уверен, насколько отличаются ваши модели. Если есть общие поля, вы можете разместить их в отдельной модели и использовать наследование модели.