【发布时间】:2022-06-16 20:57:15
【问题描述】:
首先我的代码有错误,然后我在 StackOverflow 中询问。
然后有人帮我解决了这个错误。这是链接:get() returned more than one OrderProduct -- it returned 3 [第一个错误][1]
但我现在有一个新问题。
当有人订购产品时,产品不会从购物车中删除。我不知道为什么会这样。
但在第一次修复之前,产品已成功从购物车中删除。现在第一个错误已修复,但我面临第二个错误。请帮帮我,产品不会从购物车中删除。
我已经放了我的第一个错误的链接。 这是我修复第一个错误后的views.py:
def process_order(request):
transaction_id = datetime.now().timestamp()
data = request.POST
name = data['name']
email = data['email']
phone = data['phone']
address = data['address']
city = data['city']
state = data['state']
zipcode = data['zipcode']
if request.user.is_authenticated:
customer = request.user.customer
order, created = Order.objects.get_or_create(customer=customer, complete=False)
shipping_info = ShippingAddress.objects.create(
customer=customer,
order=order,
address=address,
city=city,
state=state,
zipcode=zipcode
)
order_data = cart_data(request)
cart_total_price = order_data['order'].cart_total_price
cart_products_quantity = order_data['order'].cart_products_quantity
products = order_data['products']
product_list = ''
for item in products:
product_list += f'{item.product.name}: {item.quantity} шт. {item.total_price}\n\n'
else:
customer, created = Customer.objects.get_or_create(
name=name,
email=email,
phone=phone
)
order, created = Order.objects.get_or_create(customer=customer, complete=False)
shipping_info = ShippingAddress.objects.create(
customer=customer,
order=order,
address=address,
city=city,
state=state,
zipcode=zipcode
)
order_data = cart_data(request)
cart_total_price = order_data['order']['cart_total_price']
cart_products_quantity = order_data['order']['cart_products_quantity']
products = order_data['products']
product_list = ''
for item in products:
product_list += f'{item["product"]["name"]}: {item["quantity"]} шт. {item["total_price"]}\n\n'
message_to_user = f"""Здраствуйте, {name}
Ваш заказ (#{transaction_id}) принят на обработку.
Заказанные товары:
{product_list}
Общее количество товаров: {cart_products_quantity}
Обая стоимость товаров: {cart_total_price}
Для подтверждения заказа с вами свяжутся в ближайшее время.
"""
send_mail(
'Оформление заказа',
message_to_user,
settings.EMAIL_HOST_USER,
[email]
)
message_to_owner = f"""
Заказ #{transaction_id}
Заказанные товары:
{product_list}
Общее количество товаров: {cart_products_quantity}
Общая стоимость товаров: ${cart_total_price}
Информация о покупателе:
Имя: {name}
Email: {email}
Order: {order}
Телефон: {data['phone']}
Адрес: {data['address']}
Город: {data['city']}
Регион: {data['state']}
Индекс: {data['zipcode']}
"""
send_mail(
'Обработка заказа',
message_to_owner,
settings.EMAIL_HOST_USER,
[settings.EMAIL_HOST_USER],
fail_silently=True
)
if not request.user.is_authenticated:
session = request.session
cart = session.get(settings.CART_SESSION_ID)
del session["cart"]
else:
customer = request.user.customer
order, created = Order.objects.get_or_create(customer=customer, complete=False)
order_product = OrderProduct.objects.filter(order=order).first()
if order_product is None:
order_product = OrderProduct(order=order)
order_product.delete()
order.save().pop()
messages.success(request, "Заказ успешно оформлен. Проверьте свою электронную почту!!!")
return redirect("product_list")
'''
Please help me quickly:)
[1]: https://stackoverflow.com/questions/72391555/get-returned-more-than-one-orderproduct-it-returned-3
【问题讨论】:
-
Ваш заказ (#{transaction_id}) принят на обработку.不是有效的 python 代码 -
我没听懂你,对不起