无法覆盖django中NumberInput字段的step属性

68bkxrlz  于 2023-08-08  发布在  Go
关注(0)|答案(2)|浏览(91)

我正在尝试制作一个NumberInput小部件,其步长为0.5,其定义如下:

widgets = {
    "hours_per_day": widgets.NumberInput(attrs={'step': '0.5'})
}

字符串
但是,模板始终以属性步长为0.1来渲染。此小部件用于ModelForm的DecimalField。为什么step属性没有改变?
下面是表单中的(有用的)代码:

class Registration_form(ModelForm):
    class Meta:
        model = Registration

        fields = [
            "hours_per_day",
        ]

        widgets = {
            "hours_per_day": widgets.NumberInput(attrs={'step': '1'})
        }

i1icjdpr

i1icjdpr1#

尝试将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'}),

)

字符串

kd3sttzy

kd3sttzy2#

您可以使用forms.NumberInput()来覆盖forms.DecimalField()的step属性,方法如下:

from django import forms

class TestForm(forms.ModelForm):
    class Meta:
        widgets = {
            'num': forms.NumberInput(attrs={'step': 0.5})
        }          # Here

个字符

相关问题