Django DecimalField"。"代替","

时间:2016-12-21 10:03:13

标签: django django-models django-templates admin

我认为这似乎是一个千言万语的语言问题。如果我在settings.py中使用en-us它可以工作,但如果我将它改为丹麦语' da'它将它转换为逗号...我可以使用' da'并强制模型使用英语?

如果我将11.766647100448608粘贴或键入管理员的lon字段并点击保存,则会将.更改为,,如11,766647100448608。其他字段lat的情况也是如此。这是正常的行为吗,这是我的意思吗?

我需要这段时间,因为它是mapbox的坐标。我的标记最终在地球的另一边停了下来。

从模型中:

class Map(models.Model):
project = models.ForeignKey(Project, related_name='map')
lon = models.DecimalField(max_digits=17, decimal_places=15, default='')
lat = models.DecimalField(max_digits=17, decimal_places=15, default='')

从模板:

"type": "Feature",
        "geometry": {
          "type": "Point",
          "coordinates": [
            {{ map.lon }},
            {{ map.lat }}
          ]
        }

这就是我想要的:

{
  "type": "Feature",
  "properties": {},
  "geometry": {
    "type": "Point",
    "coordinates": [
      11.766647100448608,
      55.22922803094453
    ]
  }
}

但这就是我得到的:

{
  "type": "Feature",
  "properties": {},
  "geometry": {
    "type": "Point",
    "coordinates": [
      11,766647100448608,
      55,22922803094453
    ]
  }
}

1 个答案:

答案 0 :(得分:1)

django管理员可能表现正常;问题在于如何将十进制字段转换为模板中的字符串。这可能是由于国际化。实际上,DECIMAL_SEPARATOR设置存在,但"区域设置规定的格式具有更高的优先级"。

我建议你在模板中尝试以下内容:

{% load l10n %}

"type": "Feature",
    "geometry": {
      "type": "Point",
      "coordinates": [
        {{ map.lon|unlocalize }},
        {{ map.lat|unlocalize }}
      ]
    }

unlocalize模板标记在Django documentation

中描述