无法覆盖Django中NumberInput字段的step属性
我正在尝试制作一个数字输入的控件,它的步进值是0.5,也就是每次增加或减少的值是0.5,具体在表单中是这样定义的:
widgets = {
"hours_per_day": widgets.NumberInput(attrs={'step': '0.5'})
}
但是,模板总是显示步进值为0.1。这个控件是用在ModelForm的DecimalField里的。为什么步进值没有改变呢?
下面是表单中的(有用的)代码:
class Registration_form(ModelForm):
class Meta:
model = Registration
fields = [
"hours_per_day",
]
widgets = {
"hours_per_day": widgets.NumberInput(attrs={'step': '1'})
}
2 个回答
1
你可以使用 forms.NumberInput() 来修改 step
属性,这个属性是 forms.DecimalField() 的一部分。下面是一些示例方法:
from django import forms
class TestForm(forms.ModelForm):
class Meta:
widgets = {
'num': forms.NumberInput(attrs={'step': 0.5})
} # Here
from django import forms
class TestForm(forms.ModelForm):
num = forms.DecimalField(
widget=forms.NumberInput(attrs={'step': 0.5})
) # Here
5
试着把 NumberInput
定义成一个 TextInput
,像这样,然后每次增加 0.5
:
from django.forms.widgets import TextInput
class NumberInput(TextInput):
input_type = 'number'
#Usage
widgets = (
'number_field': NumberInput(attrs={'min': '0', 'max': '10', 'step': '0.5'}),
)