我有一个模型:

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()

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

我做错了什么?谢谢。

最佳答案

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

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

关于django - Django注释Concat-表达式包含混合类型。您必须设置output_field,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44888604/

10-09 17:11