3
我试图在Django中创建一个百分比字段,用户只需填写40个字符的40%。在输入框右侧会有一个百分比符号,以便他们知道他们应该填写一个百分比。 0.4必须存储在数据库中。到目前为止,我已经试过如下:Django百分比字段
class PercentageField(fields.FloatField):
widget = fields.TextInput(attrs={"class": "percentInput"})
def to_python(self, value):
val = super(PercentageField, self).to_python(value)
if is_number(val):
return val/100
return val
def prepare_value(self, value):
val = super(PercentageField, self).prepare_value(value)
if is_number(val):
return str((float(val)*100))
return val
def is_number(s):
if s is None:
return False
try:
float(s)
return True
except ValueError:
return False
它的工作原理,但问题是,当我张贴无效数据和形式再次呈现,它会显示40 4000换句话说,它乘以数量再次与100没有分开它。
任何建议如何解决它?
我试过this解决方案,但它重复了100次的值。在我纠正之后,它也有同样的问题。
我正在使用Python3.5
如果你把'40'当成'40%'和'0.4'作为'0.4%',那么为什么要使用单独的字段呢?为什么不使用最小值和最大值验证器的简单FloatField()? – v1k45
用户可以填写120,也可以填写120%。如果他们填入1.2,我不知道它是否是1.2%的1.2% – Johan
..那么,你希望用户能够填充120 120%? – v1k45