2016-12-06 2 views
0

Jedes Mal, wenn im laufenden form.is_valid() i den Fehler:eine gültige Wahl wählen ModelChoiceField

Select a valid choice. That choice is not one of the available choices.

Hier ist, was ich in meiner Ansicht nach tun:

timeframes = HostTimeFrame.objects.all() 
if request.method == 'POST': 
    form = SelectDatesForm(request.POST, timeframes=timeframes) 
    if form.is_valid(): 
     pass 
else: 
    form = SelectDatesForm(timeframes=timeframes) 

Meine Form tut dies:

Ich habe seit Stunden versucht zu finden, wo diese tatsächliche Validierung durchgeführt wird, und ich fand es, erstellt einen Fehler here.

Antwort

3

Laut Dokumentation ModelChoiceField seine Standard-Widget ist Selectdoc

Wenn Sie mehrere Werte auswählen möchten, müssen Sie ModelMultipleChoiceField wie folgt verwenden:

+0

Wow ... Die Fehlermeldung dafür sollte dann klarer sein, funktioniert, danke! – Julian

0

Dies scheint ein Fehler zu sein, war mein Problem zu umgehen meine eigene Auswahlfeld das Erstellen und Überschreiben der to_python() -Methode:

class CustomModelChoiceField(ModelChoiceField): 
    def to_python(self, value): 
     if value in self.empty_values: 
      return None 
     try: 
      key = self.to_field_name or 'pk' 
      #--------hacky bugfix--------------- 
      if type(value) == list: 
       value = value[0] 
      value = self.queryset.get(**{key: value}) 
     except (ValueError, TypeError, self.queryset.model.DoesNotExist): 
      raise ValidationError(self.error_messages['invalid_choice'], code='invalid_choice') 
     return value 
Verwandte Themen