0

我想創建一個包含FloatRangeField的ModelForm。但是,當使用十進制數字發佈表單時,表單驗證沒有通過,它說我應該輸入最接近的整數。在Django上的RangeWidget FloatRangeField

我試着用下面的代碼覆蓋插件的行爲:

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

然而,這不返回所需的行爲,上述問題仍然存在。我如何才能達到正確的行爲。我使用的是django-crispy-forms,但如果我以非脆弱的方式呈現表單,問題依然存在。

回答

0

我的問題是,窗體是formset的一部分。因此,在ModelForm中重寫該小部件不起作用。我不得不在inlineformset_factory中更改它:

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