【问题标题】:Select raw data from multi table从多表中选择原始数据
【发布时间】:2019-10-30 10:48:45
【问题描述】:

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

例如。

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?

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

【问题讨论】:

    标签: django django-rest-framework


    【解决方案1】:

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

    我建议您创建一个包含所有必填字段的模型并将managed Meta 选项设置为 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)

    【讨论】:

    • 文档仅用于原始和打印。我在那里很困惑。调用 raw 后是否需要调用序列化程序?就像那个serializer = TsmtTempModelSerializer(query,many=True),但是这个得到了错误。无效的对象名称'db_tsmttempmodel'。谢谢。
    猜你喜欢
    • 2018-07-31
    • 2020-12-04
    • 2014-01-05
    • 2015-06-22
    • 2020-07-04
    • 2016-06-28
    • 2012-05-09
    • 1970-01-01
    相关资源
    最近更新 更多