Django ORM / PostgreSQL
Основная цель написанного ниже запроса - создать список пользователей, которые создали наибольшее количество заказов. Мне удалось создать простой лог c, который определяет баллы лояльности на основе общего количества заказов, созданных конкретным пользователем, в сочетании с максимальным счетом, который был записан в системе:
queried_orders = Order.objects.all()
queried_orders = queried_orders.annotate(number_of_completed_orders=Count('*')).values('number_of_completed_orders')
maxiimum_number_of_orders = queried_orders.aggregate(
maximum_number_of_completed_orders=Max('number_of_completed_orders')
)
queried_orders = queried_orders.order_by('Order_User').annotate(
loyalty_points=Case(
When(
Q(
Q(number_of_completed_orders__gt=0)
),
then=5*F('number_of_completed_orders')/maxiimum_number_of_orders['maximum_number_of_completed_orders']
),
output_field=DecimalField(),
)
)
Наборы данных выглядят следующим образом:
[{'number_of_completed_orders': 15, 'loyalty_points': Decimal('75')},
{'number_of_completed_orders': 4, 'loyalty_points': Decimal('20')},
{'number_of_completed_orders': 6, 'loyalty_points': Decimal('30')},
{'number_of_completed_orders': 88, 'loyalty_points': Decimal('440')}
Сейчас я пытаюсь немного изменить это поле и создать диапазон чисел между: 0 и F ('loyalty_points')
annotate(enumerated_list_of_elements=FUNCTON_NAME(0:F('loyalty_points')))
но я не могу найти правильное PostgreSQL имя функции для этой операции. Вопрос в том, есть ли такая функция, или эта модификация должна быть сделана с использованием Python?