从多表中选择原始数据

时间:2019-10-30 10:48:45

标签: django django-rest-framework

我想从多个表中选择原始数据。

例如

query = tempmodel.objects.raw('select empid as id,employee.empid,ccmaster.cscid from employee
                                left join ccmaster
                                on employee.cscid = ccmaster.cscid'   

我需要为tempmodel创建一个包含所有必填字段的新模型吗?

我已经尝试过使用cursor.execute,但这只会返回结果值,而不会返回该字段。

如何为多表选择原始数据?

我已经检查了那个=> raw sql with multiple table,但老实说,我不明白答案。

1 个答案:

答案 0 :(得分:1)

raw()自动将查询中的字段映射到模型上的字段。 (https://docs.djangoproject.com/en/2.2/topics/db/sql/#mapping-query-fields-to-model-fields

我建议您创建一个包含所有必填字段的模型,并将managed元选项设置为False(https://docs.djangoproject.com/en/2.2/ref/models/options/#managed

class TempModel(models.Model):
    field = models.ForeignKey(Question, on_delete=models.CASCADE)
    # ...

    class Meta:
        managed = False

(可选)除此之外,也许您可​​以使用自定义模型管理器(https://docs.djangoproject.com/en/2.2/topics/db/managers/#adding-extra-manager-methods