连接到Django查询中的新字段

时间:2018-06-04 14:08:53

标签: python django

考虑一个名为DataTable的表。它有两个字段,A和B.我想返回此表的所有行,并注释一个名为C的字段,它是A和B的串联。

这是我试过的

from django.db.models import CharField, Value
from .models import DataTable

def Test(request):
    query = DataTable.objects.all().annotate(C=Value('A' + '-' + 'B', 
          output_field=CharField()))
    # the rest of the function...

问题在于,C实际上只是每个返回行的字符串文字“A - B”。我想将A和B的实际值用于该连接。

2 个答案:

答案 0 :(得分:2)

看起来需要concat

from django.db.models import CharField, Value
from django.db.models.functions import Concat

query = DataTable.objects.annotate(C=Concat('A', Value('-'), 'B', output_field=CharField())

答案 1 :(得分:1)

您可以使用Value(),当然还有Concat django

Value是设置空格或-,请尝试以下操作:

from django.db.models import Value, CharField
from django.db.models.functions import Concat


def Test(request):
     query = DataTable.objects.annotate(C=Concat('A',Value('-') ,'B',
                 output_field=CharField())
      # the rest of the function...