2017-07-03 40 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

謝謝!有用! –

相關問題