在我的Django项目中,我在decimalField中保存了一笔钱。问题是我打印时数字的格式。我需要它在德国货币格式10.000,00欧元,所以第一个点作为分隔符和一个逗号的美分。在Django中,我只能用逗号分隔所有的东西,比如10,000,00有没有人知道我如何按照我想要的方式实现它?
vwoqyblh1#
也许最干净的方法是用locale化它。首先检查您的系统是否支持德语locale,例如Debian:
locale
$ locale -a
这将列出所有地区的,名称可以在不同的系统。如果未显示区域设置,则可以使用以下命令生成一个:
$ sudo locale-gen de_DE $ sudo locale-gen de_DE.utf8 $ sudo update-locale
现在我们可以使用这个区域设置来格式化数字:
import locale class MyModel(models.Model): amount = models.DecimalField(max_digits=12, decimal_places=2) @property def as_money(self): locale.setlocale(local.LC_ALL, 'de_DE.utf8') return locale.format('€ %.2f', self.amount, grouping=True, monetary=True)
然后,您可以将其用于MyModel对象my_model和my_model.as_money。通常,货币符号放在金额的前面,以防止人们在前面写数字(而在末尾写数字通常不是问题)。
MyModel
my_model
my_model.as_money
1条答案
按热度按时间vwoqyblh1#
也许最干净的方法是用
locale
化它。首先检查您的系统是否支持德语locale
,例如Debian:这将列出所有地区的,名称可以在不同的系统。如果未显示区域设置,则可以使用以下命令生成一个:
现在我们可以使用这个区域设置来格式化数字:
然后,您可以将其用于
MyModel
对象my_model
和my_model.as_money
。通常,货币符号放在金额的前面,以防止人们在前面写数字(而在末尾写数字通常不是问题)。