我有一个带有此输入的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)
答案 0 :(得分:1)
两年了!我很晚了
class AdvertisePostForm(forms.ModelForm):
class Meta:
model = AdvertisePost
fields = ['duration', ...]
widgets = {
'duration': forms.TextInput(attrs={'type': 'range'})
}
希望这行得通 编辑: 如果您想显示它,则需要一些JavaScript,并在后端进行一些工作以将其转换为Int