Résolue

Récuperer la quantité du produit dans le form

# Django # Formulaires

Bonjour, est-ce que c'est possible de récupérer la quantité disponible en stock pour faire un truc du genre :

quantity = forms.ChoiceField(choices=[(i,i) for i in range(1,product_quantity)])

Thibault houdon

Mentor

Bonjour Christian,


Oui c'est possible en modifiant un peu la méthode init de ton formulaire.


Par exemple :

class OrderForm(forms.ModelForm):
    quantity = forms.ChoiceField(choices=[(i, i) for i in range(1, 11)])

    class Meta:
        model = Order
        fields = ['quantity']

    def __init__(self, *args, **kwargs):
        limited_quantity = kwargs.pop("quantity", 11)
        super().__init__(*args, **kwargs)

        choices = [(i, i) for i in range(1, limited_quantity)]
        self.fields['quantity'] = forms.ChoiceField(choices=choices)]) 


Et quand tu crées ton formulaire :

order = Order.objects.get(pk=1)
form = OrderForm(request.POST, quantity=order.quantity)


Je n'ai pas testé le code en condition, je ne me souviens plus de tous les détails du projet, mais il me semble qu'à peu de choses prêt à devrait marcher et tu as les éléments de base, je te laisse essayer de ton côté et revenir vers moi si tu as un souci ou des erreurs spécifiques :)

On utilise modelformset_factory, donc on ne crée pas directement le formulaire

Thibault houdon

Mentor

Ah oui effectivement, je vais faire des essais mais je pense que la solution se situe ici :

https://docs.djangoproject.com/en/4.1/topics/forms/formsets/#using-initial-data-with-a-formset

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.