Django annotate 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 Expression contains mixed types. You must set output_field: queryset = Motocycle.objects.annotate( full_name=Concat( 'title', Value(' '),

Вопрос:

У меня есть модель:

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

Оцените статью
Добавить комментарий