You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么我的Django视图中django-money汇率转换结果异常?

问题根因与解决方案

1. 核心错误:使用固定历史汇率接口

你当前配置的FIXER_URL和OPEN_EXCHANGE_RATES_URL都硬编码了2013、2017年的历史汇率端点,获取到的是多年前的陈旧汇率数据,和当前实际汇率偏差极大,这是转换结果错误的核心原因。

2. 修复步骤

  • 步骤1:修改汇率接口配置为最新汇率端点

    将settings.py里的两个接口地址替换为实时接口(去掉历史日期路径即可),修改示例:
    OPEN_EXCHANGE_RATES_URL = 'https://openexchangerates.org/api/latest.json?symbols=EUR,NOK,SEK,CZK,USD,GBP,CAD,CHF,DKK,KZT,BGN,PLN,HUF,RUB,RON,UAH,TRY,ZAR'
    FIXER_URL = 'http://data.fixer.io/api/latest?symbols=EUR,NOK,GBP,SEK,CZK,USD,CAD,CHF,DKK,KZT,BGN,PLN,HUF,RUB,RON,UAH,TRY,ZAR'
    
  • 步骤2:更新本地缓存的汇率数据

    django-money会默认缓存已获取的汇率,修改配置后执行命令刷新本地存储的汇率值:
    python manage.py update_rates
    
  • 步骤3:可选精度优化

    你当前模型里credit_limit用的是FloatField,浮点类型容易出现精度丢失,建议改成MoneyField和对应币种直接绑定,避免后续转换时的额外精度误差。
  • 步骤4:验证转换结果

    可以直接在Django shell中测试转换逻辑是否符合预期:
    from djmoney.contrib.exchange.models import convert_money
    from djmoney.money import Money
    # 测试TRY转USD
    print(convert_money(Money(1000000, 'TRY'), 'USD'))
    # 测试EUR转USD
    print(convert_money(Money(10000, 'EUR'), 'USD'))
    

内容的提问来源于stack exchange,提问作者stephone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 07:24:07