Résolue

Conseil Django : add_to_cart

# Affichage # Django

Gabriel Trouvé

Mentor

Bonsoir,

Dans mon projet avec les idées, je souhaite qu'un utilisateur puisse les ajouter dans un panier.
On n'est pas dans un système traditionnel d'un article avec un stock. Du coup je n'ai pas créé de modèle intermédiaire du style "Order".

C'est pour ça que si l'idée est déjà dans le panier j'ai une condition qui va faire que... Justement c'est là où j'ai un doute.

J'hésite à rediriger vers une page du style "Idée déjà dans le panier" mais ça fait un peu solution de facilité ? Ou ça peut très bien se faire comme ça ?

En fait j'ai un doute sur la meilleure manière d'afficher l'erreur à l'utilisateur dans ce cas précis.

Merci d'avance

EDIT : en fait je pense qu'utiliser messages de django.contrib peut être bien dans cas précis. Car je peux afficher mon erreur après le redirect. Je viens de tester ça fonctionne. De plus Thibault tu l'utilises dans le docshop si je ne dis pas de bêtise ^^

def add_to_cart(request, slug):
    user = request.user

    cart, _ = Cart.objects.get_or_create(buyer=user)
    idea = get_object_or_404(Idea, slug=slug)

    if idea in cart.ideas.all():
        # on ne peut pas ajouter deux fois la même idée
        messages.add_message(request, messages.ERROR, "L'idée est déjà dans le panier")
        return redirect("ideas:all")
    else:
        cart.ideas.add(idea)
        # on ajoute au panier et on va dans la vue panier
        return redirect("ideas:cart")

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.