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