1

由于我是 django 新手,我知道如何在 Django 中查询单个模型,但我需要同时查询多个模型。

我需要在 Django 中开发一个 UNION 查询,其中包含 3 个模型,即 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"
        }]
    },

这是我的 models.py 文件。

class Businessowners(models.Model):
    b_id = models.IntegerField()
    userid = models.IntegerField(primary_key=True, db_column='UserID')
    email = models.CharField(max_length=150L)
    b_name = models.CharField(max_length=100L)
    class Meta:
        db_table = 'businessowners'

class Users(models.Model):
    user_id = models.BigIntegerField(primary_key=True)
    username = models.CharField(max_length=20L)
    email = models.CharField(max_length=50L)
    date_time = models.DateTimeField()
    class Meta:
        db_table = 'users'

class WebQuery(models.Model):
    query_id = models.BigIntegerField(unique=True)
    conversation_id = models.CharField(max_length=50L)
    u_id = models.CharField(max_length=50L)
    u_query = models.CharField(max_length=500L)
    sent_to = models.CharField(max_length=500L)
    date_time = models.DateTimeField()
    is_reply = models.IntegerField()
    is_responded = models.IntegerField()
    class Meta:
        db_table = 'web_query'

class WebReply(models.Model):
    reply_id = models.IntegerField(primary_key=True)
    query_id = models.BigIntegerField()
    conversation_id = models.CharField(max_length=50L)
    b_id = models.CharField(max_length=20L)
    u_query = models.CharField(max_length=500L)
    user_id = models.CharField(max_length=20L)
    date_time = models.DateTimeField()
    class Meta:
        db_table = 'web_reply'
4

1 回答 1

0

这个问题与最近被问到的另一个问题非常相似,我建议你看看Django Union Query

基本上,如果可以收集所有源,则前进的方法是使用 SQL 视图。然后查询该视图。

于 2013-07-16T08:17:43.667 回答