Как найти соотношение между удельной и общей стоимостью с аннотацией в Django и сохранить ее в каждой сущности? - PullRequest
0 голосов
/ 12 июня 2018

Я пытаюсь рассчитать соотношение между продажами каждого продукта и общими продажами.Я хочу сохранить это соотношение в каждой модели объекта.Как я могу это сделать?

Это моя попытка.Не работаетВыдает «преобразование из CombinedExpression в десятичное не поддерживается».

count_products = Product.objects.count() # total value
products = Product.objects.annotate(num_sales=Count('cartitem')).all().annotate(support=Value(F('num_sales') / count_products, output_field=DecimalField()))

1 Ответ

0 голосов
/ 13 июня 2018

Вам не нужно использовать Value для вашего деления, оно используется только для констант.Это должно быть .annotate(support=F('num_sales') / count_products).Также я бы предложил добавить output_field в ваш Count('cartitem'), чтобы база данных делала десятичное, а не целочисленное деление.Обратите внимание, что output_field должен быть экземпляром, а не самим классом.Поэтому добавьте () после DecimalField, этого будет достаточно.

...