gpt4 book ai didi

mysql - 如何创建两个不同 django 模型的联合?

转载 作者:行者123 更新时间:2023-11-29 16:37:40 24 4
gpt4 key购买 nike

我有两个 django 模型

class ModelA(models.Model):
title = models.CharField(..., db_column='title')
text_a = models.CharField(..., db_column='text_a')
other_column = models.CharField(/*...*/ db_column='other_column_a')


class ModelB(models.Model):
title = models.CharField(..., db_column='title')
text_a = models.CharField(..., db_column='text_b')
other_column = None

然后我想使用union合并该模型的两个查询集

ModelA.objects.all().union(ModelB.objects.all())

但在查询中我看到

(SELECT
`model_a`.`title`,
`model_a`.`text_a`,
`model_a`.`other_column`
FROM `model_a`)

UNION
(SELECT
`model_b`.`title`,
`model_b`.`text_b`
FROM `model_b`)

当然,我得到了异常(exception)使用的 SELECT 语句具有不同的列数

如何创建别名和假列以使用联合查询?

最佳答案

您可以对最后一列进行注释,以弥补列号不匹配的情况。

a = ModelA.objects.values_list('text_a', 'title', 'other_column')
b = ModelB.objects.values_list('text_a', 'title')
.annotate(other_column=Value("Placeholder", CharField()))

# for a list of tuples
a.union(b)

# or if you want list of dict
# (this has to be the values of the base query, in this case a)

a.union(b).values('text_a', 'title', 'other_column')

关于mysql - 如何创建两个不同 django 模型的联合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53495873/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com