当前位置:  开发笔记 > 编程语言 > 正文

用于表示美元金额的最佳django模型字段是什么?

如何解决《用于表示美元金额的最佳django模型字段是什么?》经验,为你挑选了4个好方法。

我需要在Django模型的字段中存储一美元金额.什么是最好的模型字段类型?我需要能够让用户输入这个值(通过错误检查,只需要一个精确到美分的数字),格式化输出给不同地方的用户,并用它来计算其他数字.



1> simplyharsh..:

一个小数领域是货币价值的正确选择.

它看起来像:

credit = models.DecimalField(max_digits=6, decimal_places=2)


除非您想代表国家债务,否则max_digits必须> 20
如果您需要这个来支持其他货币,则decimal_places = 2不一定正确.有些货币有三个小数位,比特币有一个百日咳8.
我认为这个例子几乎对所有货币都是正确的.要将货币表示为比特币,我认为使用整数字段来保存satoshis中的金额要好得多,然后将其显示给您想要的表示形式中的最终用户(BTC,mBTC等)

2> Lee Hinde..:
field = models.DecimalField(max_digits=8, decimal_places=2)

请注意,max_digits应为> = decimal_places.此示例设置允许的值最大为:999,999.99

文件:https://docs.djangoproject.com/en/1.10/ref/models/fields/#decimalfield



3> Michael Thom..:

其他答案100%正确,但不太实用,因为您仍然需要手动管理输出,格式等.

我建议使用django-money:

from djmoney.models.fields import MoneyField
from django.db import models


def SomeModel(models.Model):
    some_currency = MoneyField(
        decimal_places=2,
        default=0,
        default_currency='USD',
        max_digits=11,
    )

从模板自动工作:

{{ somemodel.some_currency }}

输出:

$123.00

它有一个强大的后端通过python-money,它实际上是标准十进制字段的替代品.



4> Çagatay Mela..:

定义小数并在值前面返回$符号.

    price = models.DecimalField(max_digits=8, decimal_places=2)

    @property
    def price_display(self):
        return "$%s" % self.price


你确实意识到你刚刚在你的属性中创建了一个无限递归循环,对吗?
推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有