0

私は、FloatRangeFieldを含むModelFormを作成しようとしています。しかし、10進数のフォームをPOSTするとき、フォームの検証は行われず、最も近い整数を入力する必要があります。RangeWidget on Django FloatRangeField

私は次のコードを使用して、ウィジェットの動作を無効にしようとした:しかし、これは、所望の動作を返さない

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

を、上述した問題は解決しません。どのようにして正しい動作に到達できますか?私はdjango-crispy-formsを使用していますが、フォームを非クリスピーな方法でレンダリングすると、問題は解決しません。

答えて

0

私の問題は、フォームがフォームセットの一部であることでした。したがって、ModelFormのウィジェットをオーバーライドしても機能しませんでした。私はinlineformset_factoryでそれを変更しなければならなかった:

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