2017-07-03 41 views
0

我有一个模型:Django注释Concat - 表达式包含混合类型。您必须设置output_field

class Motocycle(models.Model): 
    title = models.CharField(max_length=50, blank=True, default='') 
    engine_displacement = models.IntegerField(default=0) 

,我想:

queryset = Motocycle.objects.annotate(
    full_name=Concat(
     'title', 
     Value(' '), 
     F('engine_displacement'), 
     Value('') 
    ), 
).all() 

但得到了一个错误:Expression contains mixed types. You must set output_field

queryset = Motocycle.objects.annotate(
    full_name=Concat(
     'title', 
     Value(' '), 
     F('engine_displacement'), 
     Value(''), 
    ), 
    output_field=CharField(), 
).all() 

我tryed设置此output_field ,结果是:'CharField' object has no attribute 'resolve_expression'

我在做什么错了?谢谢。

回答

2

您必须将output_field传递给您的db函数,在您的代码中将其传递给注释。

queryset = Motocycle.objects.annotate(
    full_name=Concat(
     'title', 
     Value(' '), 
     F('engine_displacement'), 
     Value(''), 
     output_field=CharField(), 
    ), 
).all() 
+0

谢谢!有用! –

相关问题