J'ai un champ défini dans mon modèle-MultipleChoiceField avec le widget SelectMultiple "La valeur [...] n'est pas un choix valide."
languages = models.CharField(max_length = 30, choices=LANGUAGE_CHOICES, blank = True, null = True)
Les choix sont simple-
LANGUAGE_CHOICES = (
('English', 'English'),
)
Je définir un ModelForm sur ce modèle et remplacer les feld
languages = forms.MultipleChoiceField(choices=LANGUAGE_CHOICES, widget=forms.SelectMultiple)
Lorsque Je remplis le formulaire, sélectionne "Anglais", et essaie de soumettre, je reçois une erreur-
langues
Valeur u "[u'English ']" n'est pas un choix valide
Y a-t-il quelque chose de bas que je fais de mal? Ou le MultipleChoiceField combiné avec le widget SelectMultiple n'est-il pas le chemin à parcourir?
De plus, y a-t-il une raison pour que le choix des tuple ne puisse pas avoir deux fois la même valeur, comme je l'ai maintenant ('English', 'English')?
Voici un code supplémentaire qui pourrait être utile pour aller au fond de cette
Code modèle:
<div class="abovepad">
<label for="id_languages">Languages:</label>
{{form.languages}}
</div>
La partie des données POST avec les langues suivantes:
u'languages': [u'English'],
Exemplaire pertinent de ModelForm:
class ProfileForm(forms.ModelForm):
languages = forms.MultipleChoiceField(choices=LANGUAGE_CHOICES)
class Meta:
model = Student
Comme vous le voyez, je n'ai pratiquement rien personnalisé. Dans le passé, lorsque je rencontrais ce problème, je passais à faire des éléments de la liste à des modèles, puis en utilisant des champs ManyToMany qui ne causaient pas le même problème. Pour ces exemples, avoir des éléments être des modèles logique; dans ce cas, ce n'est pas le cas. Je veux juste savoir si je fais quelque chose de mal ou si ce combo n'est pas censé fonctionner. S'il n'y a pas de vraie réponse alors mon autre option serait d'essayer de fouiller dans le code du formulaire Django pour voir pourquoi il fait ce qu'il fait.
Merci Jordan, pour votre réponse rapide. J'ai posté l'information pertinente ci-dessus. Ma ModelForm n'inclut rien de plus, et se débarrasser du paramètre widget explicite ne permet malheureusement pas. Il me semble que le code de validation de formulaire Django prend pour une raison quelconque le tableau dans les données POST et le convertit en une chaîne ... – dpetters