Django Aggregation - поле вывода работает не так, как ожидалось

Book.objects.aggregate(price_diff=Max('price', output_field=FloatField()) - Avg('price'))

Ошибка : Выражение содержит смешанные типы: FloatField, De cimalField. Вы должны установить выходное_поле.

Даже если выходной файл используется

Почти уверен, что это должно быть

from django.db.models import ExpressionWrapper, F, FloatField, Max

Book.objects.aggregate(
    ExpressionWrapper(
        price_diff=Max(F("price")) - Avg(F("price")), output_field=FloatField()
    )
)

пер https://docs.djangoproject.com/en/4.1/ref/models/expressions/#using-f-with-annotations

Вернуться на верх