Question ordre des instructions dans une méthode
Bonsoir,
De cette manière le user.cart.order_ok n'est pas exécuté.
def complete_order(data, user):
user.stripe_id = data["customer"]
user.save()
user.cart.order_ok()
return HttpResponse(status=200)
Mais si je fais comme ci-dessous c'est bon.
Car order_ok concerne mon panier mais pas l'utilisateur en soi.
Mais la place du save ici fait que dans un cas order_ok fonctionner et dans l'autre non.
Merci d'avance
def complete_order(data, user):
user.stripe_id = data["customer"]
user.cart.order_ok()
user.save()
return HttpResponse(status=200)
https://github.com/gabigab117/R-servations-de-places-de-concerts.git
C'est une méthode du panier mais pas un champ. Donc pour moi la place du save dans la question ci-dessus n'a pas d'importance dans ce cas la. Mais j'imagine que oui au final.
Mais je ne comprends pas bien pk.
Ci-dessous le détail de mon modèle avec la méthode en question
class Cart(models.Model):
# un utilisateur ne peut avoir qu'un panier
user = models.OneToOneField(AUTH_USER_MODEL, on_delete=models.CASCADE)
orders = models.ManyToManyField(Order)
def __str__(self):
return f"(panier){self.user}"
def order_ok(self):
orders = self.orders.all()
for order in orders:
order.ordered = True
order.ordered_date = timezone.now()
order.save()
self.orders.clear()
self.delete()
def order_ko(self):
orders = self.orders.all()
for order in orders:
order.ticket.count += order.quantity
order.ticket.save()
order.delete()
self.delete()
Salut Gab, pour moi si la place du user.save() a son importance car tu viens appliquer la méthode oder_ok() du panier de l'utilisateur. Si tu fais le save() avant d'avoir appliqué la méthode, elle va s'effectué mais les modifications faites sur le panier du user ne seront pas sauvegardé dans la BDD.
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte