Modifier la suppression du panier
Promis dernière question de la soirée ^^ lol
def add_to_cart(request, slug):
user = request.user
product = get_object_or_404(Product, slug=slug)
# le panier : s'il n'existe pas il est créé, sinon on le récupère
cart, _ = Cart.objects.get_or_create(user=user)
# regarde si on a un objet order qui correspond à notre utilisateur et si le produit correspond à product
# ordered = false car on cible article pas déjà été commandé. On va recréer un article et pas modifier l'existant.
order, created = Order.objects.get_or_create(user=user, ordered=False, product=product)
# si le produit n'était pas dans le panier et qu'il est créé
if created:
cart.orders.add(order)
cart.save()
# si déjà dans le panier
else:
order.quantity += 1
order.save()
return redirect(reverse("product", kwargs={"slug": slug}))
J'ai du mal à comprendre le ordered=False dans order, created = Order.objects.get_or_create...
En gros si je ne le mets pas on risque d'utiliser un objet Order ayant un ordered=True ? Le ordered=False c'est juste pour créer un nouvel objet Order avec ordered=False ?
Merci ^^
Salut !
Effectivement, le paramètre "ordered=False" dans la ligne suivante de ton code :
order, created = Order.objects.get_or_create(user=user, ordered=False, product=product)
indique qu'on souhaite récupérer (ou créer) un objet "Order" pour l'utilisateur en cours avec les caractéristiques suivantes :
- ordered = False : le produit n'a pas encore été commandé (car on est en train de l'ajouter au panier)
- product = product : le produit correspond bien au produit en question
Si cet objet existe déjà dans la base de données, il sera récupéré. Si non, il sera créé avec les caractéristiques spécifiées (notamment ordered=False).
En résumé, le paramètre "ordered=False" est bien utilisé ici pour créer un nouvel objet "Order" avec l'indication que le produit n'a pas encore été commandé. Si on ne le spécifiait pas, on risquerait de récupérer un objet "Order" qui aurait déjà été commandé (ordered=True), ce qui ne serait pas cohérent avec l'ajout d'un produit au panier.
Bien cordialement.
Tom de l'équipe Docstring.
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte