Python Django Money-添加两个不同货币的MoneyField,并以给定货币生成输出
嗨,在过去的几天里,我一直在绞尽脑汁想如何操纵dj的资金领域。 以下是我的两个模型字段:Python Django Money-添加两个不同货币的MoneyField,并以给定货币生成输出,python,django,Python,Django,嗨,在过去的几天里,我一直在绞尽脑汁想如何操纵dj的资金领域。 以下是我的两个模型字段: client_cost = MoneyField( _('client cost'), max_digits=10, decimal_places=2, default_currency='AUD', null=True, ) camera_operator_cost = MoneyField( _('camera operator cost'),
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美元$
PS:我在使用这个:你通过以下方式获得
一些实例的金钱
实例:
money1 = some_instance.client_cost
money2 = some_instance.camera_operator_cost
因此,我们可以执行属性获取
如果安装,则可以将这些货币兑换为货币,并将其相加。例如,如果给定的货币是美元,那么我们可以通过以下方式获得两种成本的总和:
convert_money(money1, 'USD') + convert_money(money2, 'USD')
编辑
对于Money
对象,您可以分别使用some\u Money.amount
(aDecimal
对象)和some\u Money.currency
对象)获取金额和货币
Currency
对象属性,如.code
、.countries
、.name
等
例如,如果您希望获得money1
的货币代码,您可以使用:
money1.currency.code # will be 'USD', 'EUR', 'AUD', etc.
我如何知道这些字段的货币?比如:print(client_cost.currency)/'USD'Hey@Willem Van Onsem,是的,它帮助解决了我的问题。虽然实际的解决方案略有不同。看来我们可以直接比较货币1.currency和货币2.currency。令人惊讶的是,money1.currency.code给了我一个错误,说.code属性不存在。我尝试过调试,但无法理解问题。目前,只需执行x.currency==y.currency就行了。关于我的第三点,我必须实现一个付费的exchange api,这让我有点头疼。所以,我放弃了这个要求。