繁体   English   中英

我如何在integerfield中使用Django intcomma

[英]How can I use Django intcomma in integerfield

我想在Django项目中用逗号分隔表格中的数值。 然后我找到了下面的文档:

https://docs.djangoproject.com/zh-CN/2.0/ref/contrib/humanize/

我以为我可以使用“逗号”。 因此,我在INSTALLED_APPS设置中添加了“ django.contrib.humanize”。 并将{%load humanize%}放在模板中。

当我使用如下所示的“ intcomma”时,它起作用了。

{{ 999999|intcomma }} # 999,999

但是它不适用于如下所示的整数形式:

{{ form.numbers|intcomma }} # did not work.

代码显示为html而不是像这样的数字:

<input type="number" name="int_sample" value="100000" id="id_int_sample"

我的Django版本是2.0.1。

格式化IntegerField

您使用.value属性访问IntegerField ,因此:

{{ form.numbers.value|intcomma }}

请注意,这是在构造Form时设置给Form 例如,通过initial={..}或与instance=...相对应的值,您将传递到该字段。 例如,如果以形式更改值,则内容不会更改。

生成具有数字格式的<input>

如果我们想让<input>元素本身格式化以逗号分隔的数字,我们将需要一些HTML / JavaScript。 由于Django基本上只呈现网页。 网页在浏览器中的行为方式并不是Django真正的责任。

例如,我们可以使用以下方法:

<script language="JavaScript">
function commas(input){
   input.value = Number(input.value).toLocaleString();
}
</script>
{{ form.numbers }}

然后, Form应确保调用了commas函数:

SomeForm(forms.Form):
    numbers = forms.IntegerField(
        widget=forms.TextInput(attrs={'onclick':'commas(self)'})
    )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM