Данные о сохранении мота в Манитоманифилде
У меня есть проект магазина электронной коммерции на 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})
Посмотрите, что появится в вашем терминале.