Django + sqlite ошибка при аннотации: Выражение содержит смешанные типы: DurationField, IntegerField. Вы должны установить выходное_поле
Я создаю алгоритм ранжирования, построенный как выражение в Django с базой данных Sqlite. Это выглядит следующим образом:
posts = (
Post.objects.annotate(
upvote_count=Count("upvote"),
score=ExpressionWrapper(
(
(Count("upvote") - 1)
/ ((Seconds(Now() - F("published_date"))) + 4) ** gravity
)
* 100000,
output_field=FloatField(),
),
)
.filter(
publish=True,
blog__reviewed=True,
blog__blocked=False,
show_in_feed=True,
published_date__lte=timezone.now(),
)
.order_by("-score", "-published_date")
.select_related("blog")
.prefetch_related("upvote_set")[posts_from:posts_to]
)
Однако я получаю следующую ошибку от score
ExpressionWrapper
: Expression contains mixed types: DurationField, IntegerField. You must set output_field.
Я указал output_field
и совершенно уверен, что это должно быть float.
Есть предположения, что здесь может происходить?