我需要在Django中使用3个模型开发一个UNION查询,即WebQuery,WebReply和BusinessOwners,输出应该是以下形式。
{
"(#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 :(得分: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
然后创建一个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语法
进行查询或者有类似的问题:
答案 1 :(得分:0)
How can I find the union of two Django querysets?提供了使用“|”的联合示例运营商。我不确定你的模型有多么不同。如果有公共字段,您可以将它们放在单独的模型中并使用模型继承