Je veux définir des choix en dynamique.
J'ai utilisé __set_choices méthode mais, lorsque la méthode de requête est la méthode, La méthode is_valid renvoie toujours FALSE. P>
if request.method=='POST': _form = MyForm(request.POST) if _form.is_valid(): #something to do
4 Réponses :
Je reçois souvent les choix de manière dynamique dans le constructeur:
class MyForm(BaseForm):
afield = forms.ChoiceField(choices=INITIAL_CHOICES)
def __init__(self, *args, **kwargs):
super(MyForm, self).__init__(*args, **kwargs)
self.fields['afield'].choices = my_computed_choices
Merci, belle solution, facile à mettre en œuvre aussi.
Semblable à la solution de Maersu, mais si vous avez un modelForm avec un modèle qui a une fourchette à un autre modèle, vous voudrez peut-être attribuer au query de champ au lieu de choix. P>
La clé consiste à réaliser que ou quelle que soit la logique que vous aimez à l'intérieur choisies code> peut être n'importe quel appareil: my_choices code>. p> p>
Dans une vue, vous pouvez faire ce que vous pouvez effectuer les suivants
- vues.py p> où lstchoices est la liste des tuples générés dynamiquement pour vos choix. P> p>
Ouais, mais ensuite la validation échoue encore. (Django 1.8)
Quelle est la "méthode __set_choices"? Qu'est ce que ça fait? Qu'est-ce qui l'appelle? Quelle est votre forme?