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

Zor*_*gan 5 python django django-models

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

    <input id="duration_slider" type="range" min="1" max="168" value="48" />
Run Code Online (Sandbox Code Playgroud)

不过,我现在想将此滑块转换为 Django 表单字段,这样我就可以在 Django 表单中使用它。字段名称是,duration所以我将其更改idid=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'    
        ]
Run Code Online (Sandbox Code Playgroud)

编辑

意见

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

表单字段

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

Zey*_*ban 6

噢两年了!我来晚了

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

希望这有效编辑:如果你想显示它,你将需要一些 javascript 以及后端的一些工作将其转换为 Int