Résolue

Question ordre des instructions dans une méthode

# Correction de code # Stripe # Django

Gabriel Trouvé

Mentor

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

Salut Gab, oui mais c'est le panier de l'utilisateur non ?

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.

Gabriel Trouvé

Mentor

Du coup oui j'imagine car sinon ça ne fonctionne pas. Je me demandais si ça pouvait venir d'autre part le pblm.

Merci PA ^^

Inscris-toi

(c'est gratuit !)

Inscris-toi

Tu dois créer un compte pour participer aux discussions.

Créer un compte

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.