代码之家  ›  专栏  ›  技术社区  ›  saran3h

Django Money-添加两个不同货币的货币字段,并以给定货币生成输出

  •  1
  • saran3h  · 技术社区  · 7 年前

    嗨,过去几天我一直在绞尽脑汁想办法操纵DJ的资金领域。 以下是我的两个模型字段:

     client_cost = MoneyField(
        _('client cost'),
        max_digits=10,
        decimal_places=2,
        default_currency='AUD',
        null=True,
    )
    
    camera_operator_cost = MoneyField(
        _('camera operator cost'),
        max_digits=10,
        decimal_places=2,
        default_currency='AUD',
        null=True,
    )
    

    它们可以有完全不同的货币(默认为“澳元”)。

    我需要能够:

    • 从这些字段中提取货币。(需要准确的陈述)。
    • 添加这两个字段,其中可以包含任何货币的金额。
    • 用我想要的任何货币重新格式化总计。假设以澳元计算的总价值是250美元,现在我想以美元计算的总价值是184美元。$

    请帮忙。

    附言:我用这个: https://github.com/django-money/django-money

    1 回复  |  直到 7 年前
        1
  •  1
  •   willeM_ Van Onsem    7 年前

    你得到了 Money 的实例 some_instance 用:

    money1 = some_instance.client_cost
    money2 = some_instance.camera_operator_cost
    

    所以我们可以执行属性获取。

    如果安装 Exchange rate support 然后你可以把这些兑换成一种货币,并把它们加在一起。例如,如果给定货币是美元,那么我们可以用美元获得两个成本的总和:

    convert_money(money1, 'USD') + convert_money(money2, 'USD')
    

    编辑

    对于一个 对象,您可以获取 数量 货币 具有 some_money.amount (A) Decimal 对象)和 some_money.currency (A) Currency 对象)。

    货币 对象属性类似 .code , .countries , .name 等。

    例如,如果您希望获得 money1 ,您可以使用:

    money1.currency.code  # will be 'USD', 'EUR', 'AUD', etc.