Django Cart Total

Я делаю сайт электронной коммерции на django. Я настроил его на оплату через paypal. Но моя проблема в том, что я не могу установить общую сумму корзины при оплате.

Вот html код:

...
createOrder: function(data, actions) {
                return actions.order.create({
                    purchase_units: [{
                        amount: {
                            value:'{{value}}'
                        }
                    }]
                });
            },
...

Вот models.py

class Product(models.Model):
    name = models.CharField(max_length=200)
    image = models.ImageField(upload_to='images/')
    value = models.IntegerField(null=True)
    def __str__(self):
        return self.name

class Order(models.Model):
    username = models.CharField(max_length=200,null=True)
    name = models.CharField(max_length=200)
    value = models.IntegerField(null=True)
    image = models.ImageField(upload_to='images1/',null=True)
    def __str__(self):
        return self.name

Вот views.py:

#Make an order
if request.method == 'POST':
    name = request.POST['name']
    product = Product.objects.filter(name=name).first()
    value = int(product.value)
    order = Order(name=name,username=cookie,value=value,image=product.image)
    order.save()

#Buy
def buy(request):
    cookie = request.COOKIES.get('name')
    if not cookie:
        return redirect('/')
    orders = Order.objects.filter(username=cookie).all()
    for i in orders:
        global value
        value = int(i.value)
        value = value + value
    return render(request,'cart.html',{'orders':orders,'value':value})

Но я не получаю нужного значения. Как я могу подсчитать общее значение?

Спасибо.

Есть ли причина, по которой вы перебираете заказы для вычисления общей стоимости? Если нет, то вместо этого вы можете использовать Django Aggregation. Вы можете использовать следующие строки кода для вычисления общей стоимости всех заказов:

from django.db.models import Sum

def buy(request):
    cookie = request.COOKIES.get('name')
    if not cookie:
        return redirect('/')
    orders = Order.objects.filter(username=cookie).all()
    value = orders.aggregate(Sum('value'))['value__sum']
    return render(request,'cart.html',{'orders':orders,'value':value})
Вернуться на верх