Данные о сохранении мота в Манитоманифилде

У меня есть проект магазина электронной коммерции на django, который имеет пользовательскую модель пользователя:

from django.contrib.auth.models import AbstractUser
from django.db import models
from .managers import UserManager
from upload.models import Product
from django.conf import settings


class CustomUser(AbstractUser):
    previous_orders = models.ManyToManyField(Product,related_name = 'previous_orders')
    cart = models.ManyToManyField(Product,related_name = 'cart')
    address = models.TextField(default='Address not provided')
    email = models.EmailField(unique=True)
    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['username']
    objects=UserManager()

Я пытаюсь добавить товар в поле корзины со следующим представлением

def product_page(request,url):
    if request.method == 'POST':
        product=Product.objects.get(title=url)
        if request.user.is_authenticated:
            usr = CustomUser.objects.get(email=request.user.email)
            usr.save()
            usr.cart.add(product)
            usr.save()
    else:
        product=Product.objects.get(title=url) 
    return render(request,'product_view.html',{'product':product})

Но поле почему-то остается пустым.

Я не уверен, что происходит с вашими моделями, но попробуйте сделать вот что:

def product_page(request,url):
    if request.method == 'POST':
        if request.user.is_authenticated:
            product=Product.objects.get(title=url)

            # If the user is authenticated we don't have to fetch the user instance 
            # manually, it's already present in the request
            request.user.cart.add(product)

            print(f"Tried to add {product} to user {request.user.email}.")
            print(f"User cart: {request.user.cart}")
    else:
        product=Product.objects.get(title=url) 
    return render(request,'product_view.html',{'product':product})

Посмотрите, что появится в вашем терминале.

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