Почему это происходит AttributeError: объект 'User' не имеет атрибута 'cusromer'
почему возникает эта ошибка я не могу понять .Я создаю сайт электронной коммерции, где клиент может добавить товар в корзину и купить его # .Я ищу все, но не получаю правильный ответ, который может удалить это, пожалуйста, помогите мне решить эту проблему
показывается, что у объекта 'User' нет атрибута 'Customer'
и Customer = request.user.Customer
.
следовательно, проблема в слове customer или в чем-то другом .
models.py
from django.db import models
from django.contrib.auth.models import User
from django.db.models.fields.related import OneToOneField
class Customer(models.Model):
user = OneToOneField(User, on_delete=models.CASCADE, null=True, blank=True)
name = models.CharField(max_length=400, null=True)
email = models.EmailField(max_length=254)
def __str__(self):
return self.name
class products(models.Model):
name = models.CharField(max_length=500, null=True)
price = models.FloatField()
degital = models.BooleanField(default=False, null=True, blank=False)
image = models.ImageField(null=True,blank=True)
def __str__(self):
return self.name
@property
def imageURL(self):
try:
url =self.image.url
except:
url =''
return url
class Order(models.Model):
customer = models.ForeignKey(Customer, on_delete=models.SET_NULL, null=True,
blank=True)
date_ordered = models.DateTimeField(auto_now_add=True)
complete = models.BooleanField(default=False, null=True, blank=False)
transaction_id = models.CharField(max_length=500, null=True)
def __str__(self):
return str(self.id)
class Orderitem(models.Model):
product = models.ForeignKey(products, on_delete=models.SET_NULL, null=True)
order = models.ForeignKey(Order, on_delete=models.SET_NULL, null=True)
quantity = models.IntegerField(default=0, null=True, blank=True)
date_added = models.DateTimeField(auto_now_add=True)
class shippingaddress(models.Model):
customer = models.ForeignKey(
Customer, on_delete=models.SET_NULL, null=True, blank=True
)
order = models.ForeignKey(Order, on_delete=models.SET_NULL, null=True,
blank=True)
address = models.CharField(max_length=500, null=True)
city = models.CharField(max_length=500, null=True)
state = models.CharField(max_length=500, null=True)
zipcode = models.CharField(max_length=500, null=True)
date_added = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.address
views.py
def store(request):
product = products.objects.all()
context ={'product':product}
return render(request,'basic_app/store.html',context)
def cart(request):
if request.user.is_authenticated:
Customer = request.user.Customer
order, created = Order.objects.get_or_create(Customer =
Customer,complete=False)
items = order.orderitem_set.all()
else:
items = []
context ={'items':items}
return render(request,'basic_app/cart.html',context)
def checkout(request):
context ={}
return render(request,'basic_app/checkout.html',context)
cart.html
{% for item in items %}
<div class="cart-row">
<div style="flex:2"><img class="row-image" width="110" height="60" src="
{{item.product.imageURL}}"></div>
<div style="flex:2">
<p>{{item.product.name}}</p>
</div>
<div style="flex:1">
<p>${{item.product.price|floteformat:2}}</p>
</div>
<div style="flex:1">
<p class="quantity">{{item.quantity}}</p>
<div class="quantity">
<img class="chg-quantity" src="{% static 'img/^.png' %}">
<img class="chg-quantity" src="{% static 'img/V.png' %}">
</div>
</div>
<div style="flex:1">
<p>$32</p>
</div>
{% endfor %}
Здесь ваша проблема вытекает из Customer = request.user.Customer, Поэтому лучшим способом будет !
def cart(request):
if request.user.is_authenticated:
customer = request.user
order, created = Order.objects.get_or_create(customer =
customer,complete=False)
items = order.orderitem_set.all()
else:
items = []
context ={'items':items}
return render(request,'basic_app/cart.html',context)