gpt4 book ai didi

python - Django 百分比字段

转载 作者:太空狗 更新时间:2023-10-30 02:57:37 25 4
gpt4 key购买 nike

我正在尝试在 Django 中创建一个百分比字段,用户只需填写 40 表示 40%。输入框右侧会有一个百分号,让他们知道应该填写一个百分比。 0.4 必须存储在数据库中。到目前为止,我已经尝试了以下方法:

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

最佳答案

我找到了解决方案。我必须检查传入值是否为字符串。如果是,我不会乘以 100,因为它来自表格。见下文:

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) and not isinstance(val, str):
return str((float(val)*100))
return val

关于python - Django 百分比字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36477759/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com