两个查询集的Django联合不适用于带注释的值

时间:2019-08-26 12:45:42

标签: django

我正在尝试使用共享字段对两个查询集进行合并。

有效

fields = ['id', 'date_trans', 'total', 'allocated', 'balance']
qs1 = Order.objects.values_list(*fields)
qs2 = OnAccount.objects.values_list(*fields)
return qs1.union(qs2)

Order模型有一个名为CharField的{​​{1}},我想将其作为字段包含在联合中。该字段在num_invoice模型中不存在,因此为了将其包括在OnAccount中,我使用了注释。

注释可以正常工作,但联合会导致错误:

values_list()

这是我的注释和联合,不起作用

django.db.utils.ProgrammingError: UNION types character varying and date cannot be matched

更新的信息

from django.db.models import CharField, Values as V
from django.db.models.functions import Concat

fields = ['id', 'num_invoice', 'date_trans', 'total', 'allocated', 'balance']
qs1 = Order.objects.values_list(*fields)
qs2 = (
    OnAccount.objects
    .annotate(num_invoice=Concat(V('OA-'), 'id', output_field=CharField()))
    .values_list(*fields)
)
return qs1.union(qs2)

0 个答案:

没有答案