Django: Функциональность отмены заказа не обновляет экземпляры CartOrder и CartOrderItems
Я создаю приложение для электронной коммерции на Django, и у меня возникли проблемы с функцией отмены заказа. Когда пользователь отменяет заказ, я хочу обновить поле product_status в экземплярах CartOrder и CartOrderItems до «cancelled». Однако обновление не происходит, и я не вижу никаких сообщений об ошибках.
Вот мой код:
models.py:
class CartOrder(models.Model):
# ...
product_status = models.CharField(choices=STATUS_CHOICE, max_length=30, default="processing")
class CartOrderItems(models.Model):
# ...
product_status = models.CharField(max_length=200, blank=True, null=True)
order = models.ForeignKey(CartOrder, on_delete=models.CASCADE, related_name="cartorderitems")
views.py:
def create_cancel(request, oid):
if request.method == "POST":
user = request.user
try:
# Fetch the CartOrder instance
order = get_object_or_404(CartOrder, id=oid)
order.product_status = "cancelled"
order.save()
# Fetch the related CartOrderItems instance
order_item = order.cartorderitems.first()
order_item.product_status = "cancelled"
order_item.save()
# Fetch the associated product
product = get_object_or_404(Product, pid=order.pid)
# Additional product-related operations can be done here, if needed
messages.success(request, "Order successfully cancelled.")
except Exception as e:
messages.error(request, f"An error occurred: {e}")
return redirect("core:dashboard")
else:
messages.error(request, "Invalid request method.")
return redirect("core:dashboard")
Я пробовал использовать order.cartorderitems.first()
и CartOrderItems.objects.filter(order=order).first()
, чтобы получить связанный CartOrderItems instance
, но ни тот, ни другой подход не работает.
Может ли кто-нибудь помочь мне понять, что происходит не так? Я проверил базу данных, и поле product_status
не обновляется ни для CartOrder
, ни для CartOrderItems
экземпляров.