我想在我的Django项目中用逗号分隔表单中的数值。 然后我找到了以下文档:
https://docs.djangoproject.com/en/2.0/ref/contrib/humanize/
我以为我可以使用' intcomma'为了我的目的。所以我添加了#34; django.contrib.humanize"到我的INSTALLED_APPS设置。并将{%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。
答案 0 :(得分:0)
IntegerField
您使用 IntegerField
属性访问.value
的值,因此:
{{ form.numbers.value|intcomma }}
请注意,这是值在构造时设置为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)'})
)