Детализация заказа/корзины с помощью функции annotate() [django]

У меня есть models:

class Product(models.Model):
    title = models.CharField(max_length=100)
    price = models.FloatField()
    category = models.CharField(choices=CATEGORY_CHOICES, max_length=2)
    slug = models.SlugField()
    description = models.TextField()
    image = models.ImageField()

class Order(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL,
                             on_delete=models.CASCADE, null=True)
    products = models.ManyToManyField(Products, through='OrderItem', related_name='orders')
    being_delivered = models.BooleanField(default=False)

class OrderItem(models.Model):
    order = models.ForeignKey(Order, on_delete=models.CASCADE, related_name='items')
    product = models.ForeignKey(Product, on_delete=models.CASCADE, related_name='order_items')
    quantity = models.IntegerField(default=1)

А у меня есть views для создания Order и OrderItems, присоединенных к Order.

Мне нужно views для cart/order_detail: что я делаю:

def cart_detail(request):
    order = Order.objects.filter(user=request.user)
    order_item = OrderItem.objects.filter(order=order).annotate(???)
    return render(request, 'cart/cart_detail.html', {'order':order, 'order_item':order_item})

Мне нужна помощь, как правильно отобразить в шаблоне - количество, единицы Товара, цену за единицу, общую цену.

Пожалуйста, любая помощь будет полезна. Любые ссылки или фрагменты кода.

from django.db.models import Sum, F

def cart_detail(request):
    order = Order.objects.filter(user=request.user)
    order_item = OrderItem.objects.filter(order=order).annotate(total=F('quantity') * F('product__price'))
    total = order_item.aggregate(total=Sum(F('quantity') * F('product__price')))['total']
    return render(request, 'cart/cart_detail.html', {'order':order, 'order_item':order_item, 'total':total})
Вернуться на верх