【问题标题】:rounding django input field makes it dissapear舍入 django 输入字段使其消失
【发布时间】:2014-11-05 16:35:17
【问题描述】:

我的表单中有一个小数字段。

输入显示如下值:60.00

我希望它显示:60

我试过了:

{% load humanize %}
{{ form.amount|floatformat }}

我也尝试将表单字段更改为整数:

class AmountInfoForm(forms.ModelForm):

    amount = forms.IntegerField()

    class Meta:
        model = Customer
        fields = ('amount',)

这会导致该字段消失。

我做错了什么?

【问题讨论】:

  • 如果您只想显示整数,为什么还要使用 DecimalField?为什么不使用 IntegerField?
  • @DanielRoseman 因为我需要十进制字段在后端进行精度计算。这个数字将被分割和操纵。可以这样做吗?
  • 那没有回答问题。如果要显示小数,请在表单上使用整数字段;您仍然可以将数据存储在模型的十进制字段中。
  • @DanielRoseman 我尝试创建该字段的整数版本(上图),但它仍然显示小数位。你指的是这个吗?
  • @DanielRoseman 你看到我上面的更新了吗?这是你在表格中建议的吗?它仍然呈现小数。

标签: django django-forms django-templates


【解决方案1】:

恐怕我看到您将 floatformat 应用于输入元素而不是有效数值。结果,它无法显示,因此 Django 宁愿不显示任何东西。

您可以尝试以下解决方法:

首先,请尝试以这种方式打印您的表单:

{{ form.as_table }}

如果您查看源代码,您会看到,例如,名为 name 的字段的输入是这样显示的:

<input id="id_name" name="name" maxlength="25">

因此,您可以在 django 模板中模拟此行为:

<input id="id_{{form.amount.label}}" name="{{form.amount.label}}" maxlength="25" value={{form.amount.value|floatformat:0}}>

总的来说,秘诀是将 floatfomat 应用于 form.amount.value 而不是 form.amount

希望它对你有用!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-09
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 2015-09-02
    • 2017-10-28
    • 1970-01-01
    • 2019-07-20
    相关资源
    最近更新 更多