哪个Django表单字段可以为我提供<input type =“range”/>的HTML输出?

时间:2018-04-11 10:27:19

标签: python django django-models

我有一个带有此输入的html表单:

    <input id="duration_slider" type="range" min="1" max="168" value="48" />

但是我现在想将此滑块转换为django表单字段,因此我可以在Django表单中使用它。字段名称为duration,因此我将id更改为id=id_duration

我的models.py和forms.py对于这个字段会是什么样的?

目前只是:

class AdvertisePost(Post):
    ...
    duration = models.IntegerField(default=48)

    def __str__(self):
        return self.title

class AdvertisePostForm(forms.ModelForm):
    duration = ?

    class Meta:
        model = AdvertisePost
        fields = [
            ...
            #'duration'    
        ]

修改

视图

if options_form.is_valid():
    instance = options_form.save(commit=False)
    print(instance.duration) #prints the default value every time

表单字段

duration = forms.IntegerField(widget=forms.NumberInput(attrs={'type':'range', 'step': '1', 'min': '1', 'max': '148'}), required=False)

1 个答案:

答案 0 :(得分:1)

两年了!我很晚了

class AdvertisePostForm(forms.ModelForm):
     class Meta:
         model = AdvertisePost
         fields = ['duration', ...]
         widgets = {
         'duration': forms.TextInput(attrs={'type': 'range'})
         }

希望这行得通 编辑: 如果您想显示它,则需要一些JavaScript,并在后端进行一些工作以将其转换为Int