Bonjour à tous.
Pour faire simple j'ai un formulaire avec 2 champs :
1 2 3 4 5 6 7 8
|
class FormulaireForm(forms.Form):
champ1 = forms.ChoiceField(choices = (("0", u"---------"),
("1", u"1er Choix"),
("2", u"2ème Choix")),
required=True)
champ2 = forms.ModelChoiceField(queryset=Objet1.objects.all(),
required=True) |
Mon objectif est de générer la liste de tous les Objet1 dans le champ2 lorsque je sélectionne "1er Choix" dans le champs1.
Et lorsque je sélectionne "2ème Choix" je souhaiterais qu'il me génère la liste de tous les Objet2 (Objet1 et Objet2 étant complètement différent).
Au niveau du fichier de template, j'utilise de l'Ajax appuyé par la librairie Jquery pour générer la liste de tous les Objet1 ou de Objet2 selon le choix que j'ai fait dans champ1. Jusque là pas de problème.
Lorsque je valide mon formulaire, dans le cas ou j'ai choisi d'utiliser la liste des Objet1, cela fonctionne parfaitement mais dans l'autre cas il me retourne l'erreur suivante :
Cannot assign "<Objet2: Toto>": "champ2.Objet1" must be a "Objet1" instance.
Ce qui est tout a fait logique vu que dans le ModelChoiceField je lui ai spécifié un queryset qui retourne tous les Objet1 et non les Objet2.
Ma question est donc la suivante : Est-il possible de changer le queryset selon la valeur de champ1 ?
J'espère avoir été explicite 
Je vous remercie d'avance.
Partager