J'essaie de créer un formulaire dans les charges de ModelChoiceField à partir de QuerySet et je souhaite ajouter peu de valeurs personnalisées à ModelChoicefield for Extension, j'ai utilisé le champ de choix, comme ci-dessous, mais lors de la mise à jour du formulaire, obtenez une erreur de formulaire ci-dessous: Sélectionnez un choix valide. Ce choix n'est pas l'un des choix disponibles. P>
code: p> suis-je errant ici? P> P>
3 Réponses :
Avez-vous un objet personne avec pk "aucun"?
Je pense que vous devriez utiliser p> edit: p> Puisque vous utilisez un modèleChoicefield, je pense que tous vos choix seraient soit de ce type de modèle ou aucun. p> Vous pouvez "étendre" les choix de ce type en modifiant le requérant que vous transmettez dans le constructeur du champ modlechoicefield, par exemple: p> Cette question À propos de la modélisefield un peu et pourrait vous intéresser: p> Comment filtrer les choix de fourrure à l'étranger dans un modelform Django? P> P>
Nope, après avoir ajouté ELTER_LABEL = "Aucun" aussi, il ne fonctionne pas. Ma question est trop étendue le choix de QuerySet pour sélectionner l'option
ça ne va pas fonctionner. Regardez comment un ModelChoicefield CODE> fonctionne:
class TestForm(forms.Form):
mychoicefield = forms.ChoiceField(choices=QS_CHOICES)
def __init__(self, *args, **kwargs):
super(TestForm, self).__init__(*args, **kwargs)
self.fields['mychoicefield'].choices = \
list(self.fields['mychoicefield'].choices) + [('new stuff', 'new')]
def clean_mychoicefield(self):
data = self.cleaned_data.get('mychoicefield')
if data in QS_CHOICES:
try:
data = MyModel.objects.get(id=data)
except MyModel.DoesNotExist:
raise forms.ValidationError('foo')
return data
Il semble que vous souhaitiez simplement permettre à ces champs de formulaire d'être facultatif. Ne faites pas le dur sur vous-même. Voir La documentation concernant le marquage d'un champ de formulaire au besoin. < Pré> xxx pré> p>