Django 注释 Concat - 表达式包含混合类型。您必须设置 output_field
Django annotate Concat - Expression contains mixed types. You must set 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()
我尝试设置这个 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()
我有一个模型:
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()