0

Ich versuche, eine ModelForm zu erstellen, die ein FloatRangeField enthält. Wenn Sie jedoch das Formular mit einer Dezimalzahl POST senden, wird die Formularüberprüfung nicht durchgeführt und es wird angegeben, dass ich die nächste ganze Zahl eingeben soll.RangeWidget auf Django FloatRangeField

ich das Verhalten des Widgets mithilfe des folgenden Codes außer Kraft zu setzen versucht:

class MyModelForm(ModelForm): 
 
    class Meta: 
 
     fields = '__all__' 
 
     model = MyModel 
 
     widgets = { 
 
      'value': RangeWidget(NumberInput(attrs={'step': 'any'})), 
 
     }

Dies schließt jedoch nicht das gewünschte Verhalten zurückzukehren, erwähnt das Problem weiterhin besteht oben. Wie komme ich zum richtigen Verhalten? Ich benutze django-knusprige Formen, aber wenn ich die Form nicht knusprig rendere, bleiben die Probleme bestehen.

Antwort

0

Mein Problem war, dass das Formular Teil eines Formsets war. Also hat das Überschreiben des Widgets in der ModelForm nicht funktioniert. Ich musste es in der inlineformset_factory ändern:

MyModelFormSet = inlineformset_factory(
    ParentModel, 
    MyModel, 
    fields='__all__', 
    widgets = { 
      'value': RangeWidget(NumberInput(attrs={'step': 'any'})), 
     } 
)