Заполнение данных в amchart django

models.py:

class Order(models.Model):
    product = models.ForeignKey(Product, on_delete=models.CASCADE, null=True)
    order_quantity = models.PositiveIntegerField(null=True)
    date = models.DateTimeField(auto_now_add=True)
    
class Product(models.Model):
    name = models.CharField(max_length=100, choices=PRODUCTS, null = True)
    rate = models.PositiveIntegerField(null = True)
    

Views.py:

def index(request):
    orders = Order.objects.all()
    context = {
        'orders': orders,
    }
    return render(request,'index.html', context)
    

Здесь у меня есть несколько заказов для samsung, apple и т.д. Должны быть только одни данные для samsung, apple и так далее. Как я могу агрегировать order_quantity для каждого продукта и отправить данные в формате, требуемом для этих данных?

Мне нужен следующий формат данных для отображения данных в гистограмме amchart. Как я могу этого добиться?

Формат, требуемый для графика

var data = [
              {
                name: "Samsung",
                value: 35654,
              },
              {
                name: "Apple",
                value: 65456,
              },
              {
                name: "Xiomi",
                value: 45724,
              },
            ];

Вы можете сделать:

Order.objects.annotate(total_items_sold=Sum("order_set__order_quantity").values("name", "items_sold")

Который вы затем преобразуете в список словарей? Т.е. в формат данных, который вам нужен.

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