我正在尝试使用共享字段对两个查询集进行合并。
此有效:
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)