代码之家  ›  专栏  ›  技术社区  ›  yoyoyoyo123

在django查询中连接到新字段

  •  2
  • yoyoyoyo123  · 技术社区  · 6 年前

    考虑一个名为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 回复  |  直到 6 年前
        1
  •  2
  •   Brown Bear    6 年前

    看起来你需要 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())
    
        2
  •  1
  •   Lemayzeur    6 年前

    你可以这么做 Value() 当然还有 Concat 丹戈

    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...