Как я могу подсчитать, сколько продуктов заказано одним пользователем?

Это одностраничный сайт, который является своего рода сайтом электронной коммерции. Я просто хочу подсчитать одному пользователю сколько товаров заказано. Как я могу подсчитать?

index view:

def index(request):
    total_user = User.objects.count()-1
    total_orders =Frontend_Order.objects.count()
    context = {
        "total_user":total_user,
        "total_orders":total_orders
    }
    return render(request,'0_index.html',context)

frontend_view:

def frontend_orders(request):
    if request.user.is_authenticated:
    
        if request.method == "POST":
            frontend_orders_request = request.FILES['frontend_file'] if 'frontend_file' in request.FILES else None
            sections = request.POST.get('numField11')
            functionality = request.POST.get('frontend')

            if functionality == "Portfolio":
                price = int(sections)*10
            elif (functionality == "e-Commerce") or (functionality == "social-media"):
                price = int(sections)*15
            
            Frontend_Order.objects.create(
                files = frontend_orders_request,
                Number_of_Section = sections,
                Website_Functionality = functionality,
                Price = price, USer = request.user,
                Email = request.user.email
                )

            messages.success(request,f"{request.user.first_name}, Your order is procecing. I'll cotact you before placing the order.")
            
            return redirect("/", userz = request.user)
    else:
        messages.error(request,"Please login or create an account.")

        
    return redirect("/")

Фронтальная модель заказа:

class Frontend_Order(models.Model):
    USer = models.CharField(max_length=50, null=True)
    Price = models.CharField(max_length=250, null=True)
    Number_of_Section = models.CharField(max_length=250, null=True)
    Website_Functionality = models.CharField(max_length=1, null=True)
    Email = models.EmailField(max_length=50, null=True)
    files = models.FileField(upload_to="new_file/", null=True, blank=True)

    def __str__(self):
        return str(self.pk)+ str(".") + str(self.USer)

Вам следует использовать Frontend_Order.objects.filter(USer=userid) (или Frontend_Order.objects.filter(USer.id=userid), если это не сработало) для получения заказов пользователя по его id, а затем использовать цикл for и переменную counter для итерации отфильтрованных заказов и добавления количества их продуктов в счетчик.

Лучше пересмотреть выбранные имена.

Да, это возможно. Вы можете получить текущего пользователя из объекта запроса и использовать метод фильтра, например, так:

def index(request):
    total_user = User.objects.count()-1
    total_orders =Frontend_Order.objects.filter(user=request.user).count()
    context = {
        "total_user":total_user,
        "total_orders":total_orders
    }
    return render(request,'0_index.html',context)

Однако это будет работать, только если вы свяжете своих пользователей с заказами с помощью внешнего ключа, а не поля CharField:

class Frontend_Order(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)

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