Сложный запрос на объект

Итак, у меня есть сайт электронной коммерции, который я создаю. Когда клиент нажимает кнопку "Оформить заказ", сайт создает заказ, и база данных обновляется совершенно нормально. Проблема заключается в отображении сводки заказа. Если клиент уже заказывал у компании в прошлом, этот заказ сохраняется в базе данных вместе с новым. Сайт выдает ошибку "2 объекта возвращены", когда я пытаюсь получить доступ к нему через внешний ключ, который связывает таблицу заказов с таблицей User. Причина этого мне очевидна, поэтому я добавил поле datetime и установил атрибут auto_now_add в TRUE. Проблема, с которой я сталкиваюсь, заключается в выборе последнего заказа для конкретного клиента. Есть ли способ использовать что-то подобное?

user = request.user
Order.objects.filter(Customer=user).date_placed.latest()

Тот факт, что filter() возвращает набор, заставляет меня думать, что sytax не будет выполняться должным образом. Может быть, с помощью цикла for внутри функции, которая принимает User в качестве параметра? Я понятия не имею, как к этому подойти, и решил обратиться к вам. Спасибо вам, ребята.

Вид для запроса:

def orderSummary(request):
    context = {}

    if request.user.is_authenticated:

        owner = request.user.id
        user = request.user
        cart = Cart.objects.get(cart_owner=owner)
        held_items = Order_holding.objects.filter(cart=cart)
        new_order = Order(customer=user)
        new_order.save()
        order = Order.objects.get(customer = user)

        for item in held_items:
            order_item = Order_item(order=order, blackAndWhite=item.blackAndWhite, product= item.product, color = item.color, gloss=item.gloss, matte=item.matte, size=item.size, notes=item.notes, cuts=item.cuts, grommets=item.grommets, quantity=item.quantity, subtotal=item.subtotal, cart=item.cart)
            order_item.save()
            item.delete()

        
        order_items = Order_item.objects.filter(cart=cart)

        for item in order_items:
            order.items.add(item)
            order.save()

        context['order_items'] = order.items.all()


        return render(request, 'order/orderSummary.html', context)
    else:
        return HttpResponseRedirect(reverse("login"))

Файл order.models.py:

from django.db import models
from django.contrib.auth.models import User
from products.models import Product
from cart.models import Cart


class Order_item(models.Model):
    #front_image = models.ImageField()
    blackAndWhite = models.BooleanField(default=False)
    product = models.ForeignKey(Product, on_delete=models.CASCADE, null=True)
    color = models.BooleanField(default=False)
    gloss = models.BooleanField(default=False)
    matte = models.BooleanField(default=False)
    size = models.CharField(null=True, blank=True, max_length=50)
    notes = models.CharField(null=True, blank=True, max_length=1000)
    cuts = models.IntegerField(null=True, blank=True, max_length=200)
    grommets = models.IntegerField(null=True, blank=True, max_length=200)
    quantity = models.IntegerField(null=True, blank=True, max_length=200)

    cart = models.ForeignKey(Cart, on_delete=models.CASCADE, null=True)

    subtotal = models.DecimalField(max_digits=100, decimal_places=2, default=0.00)


class Order(models.Model):
    customer = models.ForeignKey(User, on_delete=models.CASCADE)
    items = models.ManyToManyField(Order_item, null=True)
    time_placed = models.DateTimeField(auto_now_add=True, null=True)

    
class Order_holding(models.Model):
    blackAndWhite = models.BooleanField(default=False)
    product = models.ForeignKey(Product, on_delete=models.CASCADE, null=True)
    color = models.BooleanField(default=False)
    gloss = models.BooleanField(default=False)
    matte = models.BooleanField(default=False)
    size = models.CharField(null=True, blank=True, max_length=50)
    notes = models.CharField(null=True, blank=True, max_length=1000)
    cuts = models.IntegerField(null=True, blank=True, max_length=200)
    grommets = models.IntegerField(null=True, blank=True, max_length=200)
    quantity = models.IntegerField(null=True, blank=True, max_length=200)

    cart = models.ForeignKey(Cart, on_delete=models.CASCADE, null=True)
    order = models.ForeignKey(Order, on_delete=models.CASCADE, null=True)

    subtotal = models.DecimalField(max_digits=100, decimal_places=2, default=0.00)

Я думаю, что вы можете сделать это:

Order.objects.filter(customer=user).latest("time_placed")

Возвращается только один объект.

Попробуйте :

Order.objects.filter(customer=user).order_by('-time_placed')
Вернуться на верх